Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#等效于VB.Net select大小写true_C#_Vb.net_Switch Statement - Fatal编程技术网

C#等效于VB.Net select大小写true

C#等效于VB.Net select大小写true,c#,vb.net,switch-statement,C#,Vb.net,Switch Statement,我试图找到一个与VB.NetSelect Case True相当的C#版本,我发现它在过去非常有用。在VB.Net中,我可以编写(一个任意示例,其中属性的类型为object,并传递布尔值或类表达式的实例): 很明显,我知道switch语句,但就我所知,case值不能是表达式。尽管C#从业者可能会对上述问题犹豫不决,但我发现它非常有用,因为它以分析顺序的优先顺序在列表中列出了我的测试用例 是否有一个C#构造,我可以在这样的列表中有一组测试用例,并处理第一个计算结果为true的测试用例,而不必嵌套一

我试图找到一个与VB.Net
Select Case True
相当的C#版本,我发现它在过去非常有用。在VB.Net中,我可以编写(一个任意示例,其中属性的类型为object,并传递布尔值或类表达式的实例):

很明显,我知道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");
}
你可以用一只手来做这件事,但请不要这样做


另一方面,这个稍微冗长的案例:

else if (value.ToString() == "True" || value.ToString() == "False")
也可以写成更简洁的模式:

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

惯用的等价物是
if/else if/else if/../else
表达式。没有必要把它们放在窝里。您可以将switch语句与
when
子句一起使用,但请不要好奇,与编写If/Else序列相比,“Select Case True”如何有用。Select Case True似乎没有给您提供任何有用的信息,如果有任何信息混淆了逻辑的话。请注意,正如@canton7所指出的,没有必要嵌套。@gunr2171:目的是不故意使其更难理解。@DaveDoknjas我完全同意使用这样的开关(在任何一种语言中)会使其更难理解,只是指出开关表达式存在,尽管可能不是100%的翻译。谢谢@canton7。直到现在,我一直在else后面使用花括号,因为在我看来,它的语法是模棱两可的。例如,上面最后一个else与第一个if相关,还是与最后一个if相关?取决于你把括号放在哪里。我能问一下
的问题是什么吗?我以前没有遇到过。顺序是先计算
if
,然后如果不匹配,则计算
else if
,然后再计算
else if
,等等,从上到下。如果执行到达
else
,但
If/else If
的臂均未匹配,则执行进入
else
。这种行为在所有具有这种结构的语言中都很常见。它与您问题中的
Case/Case/Case-Else
完全相同--
Else
的工作方式与
Case-Else
的工作方式相同。
else if (value.ToString() is "True" or "False")