题
我刚刚开始使用C#,我遇到了一些问题。是否有任何方法可以像以下内容编写VB.NET选择语句的C#等效内容?
Select Object.Name.ToString()
Case "Name1"
'Do something
Case "Name2"
'Do something else
Case Else
'Do the default action
End Select
任何帮助将不胜感激。
迄今为止,感谢您的输入,如果我将几个控件连接到一个事件处理程序,那么我想为每个控件执行一个略有不同的操作:
Private Sub Button_Click(sender as Object, e as EventArgs) _
Handles button1.Click, Button2.Click
'do a general activity
Select CType(sender, Button).Name
Case button1.Name
'do something
Case button2.Name
'do something else
Case Else
'do the defalut action
End Select
End Sub
是否有任何方法可以在C#中执行上述选择语句而无需使用嵌套IF?
解决方案
随着时间的流逝,我来找一些vb.net Select...Case
构造不适用于C#,唯一的方法是编写很多IF。
例如,在vb.net中,您可以写下:
Dim num as Integer = 5
Select Case num
Case 1 to 10
'do something
Case 11 to 20
'do another thing
Case Else
'do the default
End Select
但是没有 switch
在C#中构造,使您可以做一些此类操作。您必须在回旋处进行编码:
int num = 5;
switch (num)
{
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
//do something
break;
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
//do something else
break;
default:
//do the default
break;
}
或者,如果您碰巧与之合作 Double
或由连续而不是离散值组成的任何类型,您必须使用 if
s采取必要的措施。
原因? CS switch
需要各种常数 case
s。这与vb.net不同 Select Case
允许写作范围。
其他提示
您将在寻找Switch语句...
switch (Object.Name.ToString())
{
case "Name1":
//Do something
break;
default:
//default
break;
}
请注意,休息时间是导入的,否则该程序将在您的案例中删除。您应该能够在几乎任何C#介绍...上找到它...
使用C#7,开关已得到显着增强, ,现在可以在情况下应用更多条件,尽管它仍然不如VB版本“干净”。例如,您可以做类似的事情:
switch (examScore)
{
case int es when es >= 90: grade = "A"; break;
case int es when es >= 80: grade = "B"; break;
case int es when es >= 70: grade = "C"; break;
case int es when es >= 60; grade = "D"; break;
default: grade = "F"; break;
}
取自 /参考:
不隶属于 StackOverflow