0

次のコードがあります。州名を受け取り、別の変数をその州の省略形に設定する switch ステートメント。ただし、switch ステートメントを閉じると、変数に到達できないというエラーが表示されます。

string stateab;

switch (s)
{
    case "Alabama":
        stateab = "AL";
        break;
    case "Alaska":
        stateab = "AK";
        break;
    case "Arizona":
        stateab = "AZ";
        break;
    case "Arkansas":
        stateab = "AR";
        break;
    case "California":
        stateab = "CA";
        break;
    case "Colorado":
        stateab = "CO";
        break;
    case "Connecticut":
        stateab = "CT";
        break;
    case "Delaware":
        stateab = "DE";
        break;
    case "DENIED":
        stateab = "DENIED";
        break;
    case "District of Columbia":
        stateab = "DC";
        break;
    case "Florida":
        stateab = "FL";
        break;
    case "Georgia":
        stateab = "GA";
        break;
    case "Hawaii":
        stateab = "HI";
        break;
    case "Idaho":
        stateab = "ID";
        break;
    case "Illinois":
        stateab = "IL";
        break;
    case "Indiana":
        stateab = "IN";
        break;
    case "Iowa":
        stateab = "IA";
        break;
    case "Kansas":
        stateab = "KS";
        break;
    case "Kentucky":
        stateab = "KY";
        break;
    case "Louisiana":
        stateab = "LA";
        break;
    case "Maine":
        stateab = "ME";
        break;
    case "Maryland":
        stateab = "MD";
        break;
    case "Massachusetts":
        stateab = "MA";
        break;
    case "Michigan":
        stateab = "MI";
        break;
    case "Minnesota":
        stateab = "MN";
        break;
    case "Mississippi":
        stateab = "MS";
        break;
    case "Missouri":
        stateab = "MO";
        break;
    case "Montana":
        stateab = "MT";
        break;
    case "Nebraska":
        stateab = "NE";
        break;
    case "Nevada":
        stateab = "NV";
        break;
    case "New Hampshire":
        stateab = "NH";
        break;
    case "New Jersey":
        stateab = "NJ";
        break;
    case "New York":
        stateab = "NY";
        break;
    case "North Carolina":
        stateab = "NC";
        break;
    case "North Dakota":
        stateab = "ND";
        break;
    case "Ohio":
        stateab = "OH";
        break;
    case "Oklahoma":
        stateab = "OK";
        break;
    case "Oregon":
        stateab = "OR";
        break;
    case "Pennsylvania":
        stateab = "PA";
        break;
    case "Rhode Island":
        stateab = "RI";
        break;
    case "South Carolina":
        stateab = "SC";
        break;
    case "South Dakota":
        stateab = "SD";
        break;
    case "Tennessee":
        stateab = "TN";
        break;
    case "Texas":
        stateab = "TX";
        break;
    case "Utah":
        stateab = "UT";
        break;
    case "Vermont":
        stateab = "VT";
        break;
    case "Virginia":
        stateab = "VA";
        break;
    case "Washington":
        stateab = "WA";
        break;
    case "West Virginia":
        stateab = "WV";
        break;
    case "Wisconsin":
        stateab = "WI";
        break;
    case "Wyoming":
        stateab = "WY";
        break;

}

Console.WriteLine(stateab);

最後の行で、変数が現在のコンテキストに存在しないというエラーが表示されます。何か案は?

4

5 に答える 5

2

各ケースの最後に続行する必要がありますが、続行する必要はbreak;ありません..

于 2012-06-09T17:06:18.360 に答える
0

switchケースにリストされない文字列をステートメントに渡すと、ローカル変数が初期化されないままになる可能性があるため、コンパイラ エラーが発生します(例: "Hello world")。したがって、最初に使用する前にローカル変数を初期化する必要があります。switchステートメントの前の宣言ポイントで実行できます。

string stateab = "";

defaultまたは、例外を発生させる場所に大文字と小文字を追加できswitchます (または短縮するデフォルト値を提供します)。

switch (s)
{
    case "Alabama":
         stateab = "AL";
         break;
    // ...
    default:
         throw new ArgumentOutOfRange("s");
}

.

于 2012-06-09T17:11:02.547 に答える