C# 等效于 VB.Net select 情况 true

C# equivalent of the VB.Net select case true

我正在尝试寻找与 VB.Net Select Case True 等效的 C#,我过去发现它非常有用。在 VB.Net 中,我可以写(一个任意示例,其中 属性 是对象类型并且传递布尔值或 class 表达式的实例):

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 语句,但据我所知,case 值不能是表达式。虽然 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");
}

可以使用switch statement with when clauses执行此操作,但请不要这样做。


顺便说一句,那个稍微冗长的案例:

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

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

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