【发布时间】:2021-04-23 13:24:08
【问题描述】:
我正在尝试找到与 VB.Net Select Case True 等效的 C#,我发现它在过去非常有用。在 VB.Net 中,我可以编写(一个任意示例,其中属性是对象类型并且传递一个布尔值或表达式类的实例):
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 的?
【问题讨论】:
-
惯用的等价物是
if/else if/else if/.../else表达式。无需嵌套它们。您可以使用带有when子句的switch 语句来执行此操作,但请不要 -
c#可以有switch expressions
-
很好奇与编写 If/Else 序列相比,您发现“Select Case True”如何有用。 Select Case True 似乎没有给你任何有用的东西,如果有任何东西混淆了逻辑。请注意,正如@canton7 指出的那样,不需要嵌套。
-
@gunr2171:目标不是故意让它更难理解。
-
@DaveDoknjas 我完全同意使用这样的开关(在任何一种语言中)会使它更难理解,只是指出开关表达式存在,尽管可能不是 100% 的翻译。
标签: c# vb.net switch-statement