我有一个文本数组,是否可以引用数组元素的名称,然后使用开关引用名称,类似于这样:switch(text.name ){ case: "Photo" action... break; case: "Room" action... break; }
有可能这样做吗?(
有可能像这个
switch (text.Name)
{
case string name when name == "Photo":
// some Action
break;
case string name when name == "Room":
// some Action
break;
default:
throw new System.Exception ("Some error");
}
但问题是你为什么不直接使用if (text.name == "Photo") { ... } else if (text.name == "Room") ...
或者更好的是,你能改变来源吗?所以你可以用enum
代替string
吗?这将有助于编译器在拼写错误时注意到您。
因评论而编辑:
也许我误解了你的问题。text
是string[]
吗?因为不想在数组上循环,也不想在不同的代码路径之间切换,所以根本不能使用switch。比你需要做类似的事情
foreach (var foo in text)
{
if (foo == "Photo")
{
}
else if (foo == "Room")
{
}
}