C# switch语句中分配的不可访问变量
我有以下代码。一种switch语句,它接受一个状态名并将另一个变量设置为该状态的缩写。但是,在我关闭switch语句之后,我得到一个错误,说变量不可访问C# switch语句中分配的不可访问变量,c#,switch-statement,C#,Switch Statement,我有以下代码。一种switch语句,它接受一个状态名并将另一个变量设置为该状态的缩写。但是,在我关闭switch语句之后,我得到一个错误,说变量不可访问 string stateab; switch (s) { case "Alabama": stateab = "AL"; break; case "Alaska": stateab = "AK"; break; case "Arizona":
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);
最后一行给出了一个错误,说明变量在当前上下文中不存在。有什么想法吗?你需要
休息在每种情况结束时编码>且不继续。C#在使用switch语句时需要默认情况。没有它就无法编译。最后值得尝试一个默认案例
default:
//do something
break;
编译器要求您确保在读取stateab
变量之前为其赋值。在您的情况下,您需要满足case
子句中的s
值都不满足的情况(即使应用程序的逻辑无法满足)
您可以通过使用初始值初始化stateab
变量来轻松解决此问题:
string stateab = "";
…或在开关
语句中包含默认
子句:
case "Wyoming":
stateab = "WY";
break;
default:
stateab = "Unknown";
break;
switch (expression) {
case constant-expression: statement
jump-statement
[default:statement
jump-statement]
}
这是开关
语句的格式:
case "Wyoming":
stateab = "WY";
break;
default:
stateab = "Unknown";
break;
switch (expression) {
case constant-expression: statement
jump-statement
[default:statement
jump-statement]
}
您应该包括一个默认值
大小写,并在每个大小写末尾使用中断
。您有一个编译器错误,因为如果您向开关
语句传递一些字符串,这些字符串将不会在大小写中列出(例如“Hello world”
)。所以,您应该在第一次使用局部变量之前初始化它。您可以在switch
语句之前的声明点执行此操作:
string stateab = "";
或者,您可以将default
大小写添加到您的开关
中,在该开关中引发异常(或提供缩写的默认值)
.您从哪里想到需要一个默认的案例标签!?不需要;这里的问题是缺少对stateab
的明确分配。这是您的完整代码吗?设置string stateab=string,空时会发生什么代码>?此代码向带有@Steve的字典树或带有description属性的枚举请求帮助。无论如何都不是这样。OP在发布代码后不久就修改了代码。我假设错误信息没有更新。啊,对不起,他在宽限期内更新了,所以我看不到。请忽略我的评论,然后:)没问题:-)在更新之前发布,并解决了原始问题。(OP在每个案例
块的末尾使用了continue;
,而不是break;
。)