2016-03-24 27 views
-1

私は論文として基本的なチャットプログラムを作っています。C#のスイッチケースでの未割り当て変数の使用

enter image description here

あなたが絵に見ることができるように、それは私にライン107に割り当てられていない変数エラーになりますが、それは(線125でのように)、その後完全に正常に動作します。スイッチケースは常にケース1から始まり、そこでloginという新しいUserLoginフォームを作成します。その後、ケース2または3に進むべきかどうかを判断する。いずれも、107行目以外の任意の割り当てられていない可変エラーを持たない。私は本当になぜこれが起こっているのかという手がかりを持っていません。

+0

にswitch文と 'login'の宣言が含まれています –

+1

107行目をコメントアウトした場合、おそらく' login'を使った次の行で同じエラーが発生します。コンパイラーは、未割り当ての変数を初めて使用するときにのみフラグを設定します。 –

+4

あなたのコードのスクリーンショットではなく、あなたのコードを投稿してください。 – vesan

答えて

3

2または3になる前にケース番号1をヒットすることはわかっていますが、コンパイラでは認識されません。

ブロックloginは、nullの場合でも、switchブロックの前に値を割り当てる必要があります。あなたは常に最初のケース1をヒットしようとしてをしている知っていればあなたもswitch文を入力する前に

login = null; 

switch (...) 
{ 
    case 1: 
     login = new UserLogin(); 
     ... 

は、単に新しいUserLoginのログイン割り当てることを検討してください。

3

これは、変数が割り当てられる場所がcase 1であるためです。 case 1が決して実行されない可能性があるので、switchステートメントの外側に割り当てる必要があります。したがって、変数は決して割り当てられません。

関連する問題