2016-09-01 3 views
0

を印刷されませんし、自分のコードがエラーを投げている理由は分からない:「未割り当てのローカル変数の使用は 『価値』」ここ変数はちょっと私はクラスのためのプログラムを書いています

は私ですswitch文:だから、基本的に

switch (sType) 
      { 
      case 1: 
       Console.Write("Enter GPA: "); 
       swag = Convert.ToInt32(Console.ReadLine()); 
       break; 
      case 2: 
       Console.Write("Enter thesis title: "); 
       cool = Console.ReadLine(); 
       break; 
      case 3: 
       Console.Write("Enter dissertation title: "); 
       value = Console.ReadLine(); 
       break; 
      case 4: 
       break; 
      default: 
       Console.WriteLine("Invalid input"); 
       break; 

     } 
Console.WriteLine(value); 

私はちょうどこの「STYPE」を入力し、スイッチの作品が、私は値変数をプリントアウトするために行くとき、私は「未割り当てのローカル変数 『値』の使用」を取得していますエラー。

+1

"value"変数をどこで宣言しましたか? – Sami

+0

まあ、おそらくすべての 'switch'ブランチが' value'に値を割り当てるわけではないので、 'sType'値に応じて' value'が割り当てられなくなる可能性があります。 – zerkms

+0

これは最初はコードのちょっとした話です。 私はこのようにしました: –

答えて

4

あなたが定義したところで変数値を初期化する必要があります。

string value = string.empty; 

ケース3がプログラムで実行されない場合はどうなりますか。したがって、プログラム全体でvalueは初期化されていませんでした。しかし、いずれの場合も、最終的には最後の行にvalueの値を書きますが、これはnullになります。

コンパイラは、値を出力する前に変数の値を初期化する必要があるというエラーをスローします。


*注:彼らはどこかで使用されている前に、あなたはローカル変数に何らかの値を割り当てる必要があります。

+0

これは、最初に文字列sID、zip、thesis、valueで宣言されたコードスニップです。 –

+0

@jdoe =初期化する*少なくとも変数 'value'を' string sID、zip、thesis、value = string.empty; ' –

+0

@jdoeとすると、そのswitch文の上に' string sID、zip、thesis、value'という行を追加する十分ではない。 Am_I_Helpfulと同様に、ケース3が実行されない場合、 'value'は決して値に割り当てられません。コンパイラはこれを認識し、大声で文句を言う。宣言時にデフォルト値を割り当てます。 –

2

valueは、定義/初期化されていないようです。あなたのswitch文の上にあなたが持っている必要があります

var value = ""; 
+1

@彼の質問に対する答えを提供しましたが、どうしてそれが答えではないのですか? – blockloop

+1

私はこのポリシーを知っています。彼は定義された/初期化された変数を持っていないので、エラーを受けています。エルゴ、私の答え。 – blockloop

1
string sID, zip, thesis, value; 
sID = zip = thesis = value = string.Empty; 
1

すでに述べたとおり、あなたはそれを宣言しないで、値の変数を初期化する必要があります。変数を宣言するときは、一時的なものであっても、このようなエラーを避けるために、変数を初期化することをお勧めします。

+0

これまでになかったことは何ですか? –

+1

宣言時に常に初期化することをお勧めします。 –

関連する問題