Visual Studio について奇妙なことに気付きました。まず、関数のどこかにこれ (C#) を入力してみてください。
class Foo
{
public void Bar()
{
string s;
int i = s.Length;
}
}
これで、すぐにinがエラーとしてマークs
され、" " と表示されます。一方、次のコードを試してください。s.Length
Use of unassigned local variable 's'
class Foo
{
private string s;
public void Bar()
{
int i = s.Length;
}
}
コンパイルされ、" " という警告でs
inに下線が引かれます。private string s
Field 'Foo.s' is never assigned to, and will always have its default value null
さて、もし VS が賢くて s が常に null になることを知っているなら、なぜ 2 番目の例でその長さを取得してもエラーにならないのでしょうか? 私の当初の推測では、「コンパイラが単にその仕事を完了できない場合にのみコンパイル エラーが発生します。コードは技術的には、Bar() を呼び出さない限り実行されるため、警告にすぎません」というものでした。その説明が最初の例によって無効になることを除いて。Bar() を呼び出さない限り、エラーなしでコードを実行できます。それで、何が得られますか?単なる見落としですか、それとも何か不足していますか?