这可能有一个简单的解释我没有看到,但为什么以下代码合法:
public struct Foo { const object nullObject = null; public override string ToString() { if (nullObject == null) { return base.ToString(); } } }
以下,
public struct Foo { const dynamic nullObject = null; public override string ToString() { if (nullObject == null) { return base.ToString(); } } }
给出以下编译时错误:Foo.ToString()’:并非所有代码路径都返回一个值?
为什么nullObject是动态的这一事实使得编译器无法断言nullObject将始终为null?
编辑:扩展问题,并基于smoore’s答案,为什么编译器允许动态const字段开始?这不是自我挫败吗?我知道这个场景根本没有真正的应用,坦率地说是毫无意义的,但是我偶然发现了它,只是好奇.