これにはおそらく私が見落としている簡単な説明がありますが、なぜ次のコードが合法なのですか:
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
フィールドの開始を許可するのですか? なんか自暴自棄じゃない?このシナリオには実際の用途がまったくなく、率直に言ってまったく無意味であることはわかっていますが、まったくの偶然で偶然見つけて、興味をそそられました。