これはおそらく私が見に失敗しています簡単に説明しているが、なぜ次のコードは有効です。古い参照フィールド対動的フィールドのconst constの行動
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() ':すべてのコードパスが値を返すわけではありませんか?
なぜは、dynamic
であるということは、コンパイラは、null
であると主張できないのですか?
EDIT:質問に拡大し、smoore's回答に基づいて、なぜコンパイラはdynamic
const
フィールドで開始することができませんか?それは自己の一種ではないのですか?私はこのシナリオがまったく実際のアプリケーションを持っていないことを知っています。それは率直に言っても意味がありませんが、私はそれを偶然の事故で見つけただけで不思議に思っています。
'動的なconstフィールドはなぜ始まっていますか? '技術的には、' const'をあらゆるタイプのフィールドに適用することができます。他の機能と同様に、「なぜ私はこの機能を実装していないのですか?」という質問はありません。 「なぜ私はこの機能を実装する必要がありますか?」この場合、この機能は、 'const'フィールドが'動的である 'ことを明示的に禁止することです。ほとんどの機能要求と同様に、その答えは「時間と労力にかけるだけでは足りず、追加する重要な機能がありました」と考えられます。これは、あなた自身の足で自分自身を撃つためのあなたの方法からかなり外に出ています。 – Servy