我想用 switch 处理多种条件。这是我的代码:
string i="a1";
switch (i)
{
case string X when X.Contains("a", StringComparison.OrdinalIgnoreCase):
case string Y when Y.Contains("b", StringComparison.OrdinalIgnoreCase):
case string Z when Z.Contains("c", StringComparison.OrdinalIgnoreCase):
case string A when A.Contains("d", StringComparison.OrdinalIgnoreCase):
{
//some logic
break;
}
case string X when X.Contains("e", StringComparison.Ordinal):
{
//some logic
break;
}
}
正如你所见,switch 语句中的变量 X/Y/Z/A 对我来说毫无用处,而我每次都必须声明它们。
有什么方法可以在不声明这么多无用变量的情况下实现它吗?
最佳答案
你可以使用类型匹配模式而不引入新的模式变量,然后在guard子句中引用i
:
string i = "a1";
switch (i)
{
case string when i.Contains("a", StringComparison.OrdinalIgnoreCase):
case string when i.Contains("b", StringComparison.OrdinalIgnoreCase):
case string when i.Contains("c", StringComparison.OrdinalIgnoreCase):
case string when i.Contains("d", StringComparison.OrdinalIgnoreCase):
{
// some logic
break;
}
case string when i.Contains("e", StringComparison.Ordinal):
{
// some logic
break;
}
}
关于c# - switch语句的when表达式中的匿名变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74204551/