这可能有一个我看不到的简单解释,但为什么以下代码是合法的:
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
存在dynamic
使编译器无法断言nullObject
永远存在的事实null
?
编辑:扩展问题,并根据smoore 的回答,为什么编译器允许dynamic
const
字段以开头?是不是有点自暴自弃?我知道这个场景根本没有真正的应用,坦率地说它毫无意义,但我完全是偶然发现的,只是很好奇。