以下是开关案例
switch (strID)
{
case ConfigurationManager.AppSettings["Key1"].ToString():
Label1.Visible = true;
break;
case ConfigurationManager.AppSettings["Key2"].ToString():
Label2.Visible = true;
break;
case ConfigurationManager.AppSettings["Key3"].ToString():
Label3.Visible = true;
break;
default:
Label1.Visible = true;
break;
}
但它会给出错误“预期值为常数。”
我知道你在switch语句中不能有变量。但是有什么办法吗?
答案 0 :(得分:1)
在case语句中只能使用常量值。
最好你可以使用if语句,例如
if(ConfigurationManager.AppSettings["Key1"].ToString() == strID)
{
Label1.Visible = true;
}
else if(ConfigurationManager.AppSettings["Key2"].ToString() == strID)
{
Label2.Visible = true;
}
。 。 。 。 。 。
else
{
//default
}
答案 1 :(得分:0)
将Web.Config文件中的3个值分配给3个不同的常量,如const string key1 = ConfigurationManager.AppSettings["Key1"].ToString()
,并在switch内部使用它们而不是给出ConfigurationManager.Appsettings["Key1"].ToString();
答案 2 :(得分:0)
您可以在switch's CASE
语句中包含变量。但是,那必须是编译时常数,即`const'变量
CASE
语句需要保持不变;通过使它们保持不变,它可以使语句更加优化。 Switch
将生成等效的哈希表,其中case语句值为键。如果值可以改变,那么这种方法就无法使用。
来自ConfigurationManager.AppSettings
的值是在运行时决定的。因此您无法在Switch's CASE
语句中使用它。
您可以使用if.. else
语句作为替代解决方案。