C# 変数は本当に初期化されていませんか?
C# 仕様では、変数は使用前に明示的に初期化する必要があると規定されています。ただし、一般的な前提として、実行時の制約により「未割り当て」値が存在することが妨げられます。具体的には、参照型は、以前の呼び出しからの残差値を保持するのではなく、デフォルトで null になると見なされます。
真実: 修飾された「である」
配列要素やフィールドなどの一部の変数にはデフォルト値が自動的に割り当てられますが、ローカル変数の場合は状況が異なります。コンパイラでは、ローカル変数を使用する前に、ローカル変数を「明示的に割り当てる」必要があります。質問では明示的に述べられていませんが、これらのローカル変数が最初に非ローカル変数と同じ方法で割り当てられるかどうかが意味します。
答えは「はい」です。ランタイムでは技術的にはローカル変数を初期化されていない状態のままにすることが許可されていますが、実際にはこのようなことは起こりません。予測可能で信頼性の高い環境を確保するために、ローカル変数は積極的にゼロ化されます。
影響
ランタイムは初期化されていないローカル変数の観察を防止しますが、割り当てられていないローカル変数の使用に対する禁止は依然として存在します。これは、初期化されていない値の公開を防ぐためではなく、その値を使用することで発生する可能性のあるエラーを防ぐためです。明示的な割り当てを強制することにより、コンパイラはそのようなエラーの可能性を効果的に排除します。
以上がC# のローカル変数は、明示的な代入の前に本当に初期化されていないのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。