-1

私は論文として基本的なチャット プログラムを作成していますが、この問題に遭遇しました。

ここに画像の説明を入力

画像でわかるように、107 行目で割り当てられていない変数エラーが発生しますが、その後は (125 行目のように) 完全に正常に動作します。switch ケースは常にケース 1 から始まります。このケースでは、login という新しい UserLogin フォームを作成します。その後、ケース 2 または 3 のどちらに進むべきかを決定します。いずれのケースにも、107 行目のエラーを除いて、割り当てられていない変数エラーはありません。なぜこれが起こっているのか、私にはまったく手がかりがありません。

4

2 に答える 2

3

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

于 2016-03-24T00:48:17.340 に答える
3

ケース番号 2 または 3 をヒットする前にケース番号 1 をヒットすることを知っていても、コンパイラはそうしません。

たとえそれが単なる であってもlogin、ブロックの前に値を割り当てる必要があります。switchnull

login = null;

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

常にケース 1 を最初にヒットすることがわかっている場合は、ステートメントをUserLogin入力する前にlogin に new を割り当てることを検討してください。switch

于 2016-03-24T00:48:49.880 に答える