C#等价于VB.Net的select case true



我正试图找到一个相当于VB.NetSelect Case True的C#,我发现它在过去非常有用。在VB.Net中,我可以写(一个任意的例子,其中一个属性是object类型,并且传递了一个布尔值,或者一个类Expression的实例(:

Select Case True
Case value Is Nothing:
Throw New Exception("Invalid value.")
Case value.ToString() == "True":
moValue = value
Case value.ToString() == "False":
moValue = value
Case value.GetType().Name = "Expression":
moValue.DataTypeCode = "BOOLEAN"
moValue = value
Case Else:
Throw New Exception("Invalid value.")
End Select

很明显,我知道switch语句,但据我所知,大小写值不能是表达式。尽管C#实践者可能会对上面的内容感到犹豫,但我发现它非常有用,因为它将我的测试用例按分析顺序排列在一个列表中。

有没有一个C#构造,我可以在这样的列表中有一堆测试用例,并处理第一个评估为true的测试用例,而不必嵌套一堆if…else的?

在C#中,您可以编写以下if/else if/else语句:

if (value == null)
{
throw new Exception("Invalid value");
}
else if (value.ToString() == "True" || value.ToString() == "False")
{
moValue = value;
}
else if (value.GetType().Name == "Expression")
{
moValue.DataTypeCode = "BOOLEAN";
moValue = value;
}
else
{
throw new Exception("Invalid value");
}

可以使用带有when子句的switch语句来执行此操作,但请不要这样做。


顺便说一句,这个稍微冗长的例子:

else if (value.ToString() == "True" || value.ToString() == "False")

也可以写成更简洁的模式:

else if (value.ToString() is "True" or "False")

最新更新