5

実際に使用して比較する前に、文字列変数に値を割り当てる必要があるのはなぜですか。例: いくつかの入力 - obj

        string temp;
        if (obj== null)
        {
            temp = "OK";
        }
        string final = temp;

コンパイル時エラーが発生します。たとえば、割り当てられていない変数 'temp' を使用できません。しかし、文字列変数のデフォルト値は「null」です。これを使用したいと思います。では、なぜこれが許可されていないのでしょうか。

4

2 に答える 2

7

デフォルトが null の場合

ローカル変数のデフォルトはnull (またはそれ以外) ではありません。割り当てられていないだけです。

おそらく、文字列フィールド (クラス レベルの変数) について考えているでしょう。それは次のようになりますnull

private string temp;

private void M()
{
   if (obj== null)
   {
       temp = "OK";
   }
   string final = temp;  // default tnull
}

ただし、メソッド内では、必要な値で初期化するだけです。

string temp = null;
于 2012-10-16T11:33:13.907 に答える
2

次に、ローカル変数のデフォルトとして null を割り当てます。

string temp = null;

値を割り当てるのを忘れている可能性があるのは、コンパイラのヒントにすぎません。null を明示的に割り当てることで、それについて考えたことをコンパイラに伝えます。

C# 言語仕様 v. 4.0 セクション 1.6.6.2「メソッド本体とローカル変数」には、次のように記載されています。

メソッド本体は、メソッドの呼び出しに固有の変数を宣言できます。このような変数は、ローカル変数と呼ばれます。... C# では、値を取得する前にローカル変数を確実に割り当てる必要があります。

于 2012-10-16T11:33:59.227 に答える