VB.NET选择… C语句中的Case语句相当于

我刚开始使用C#,我有几个问题。 有没有办法编写如下所示的VB.NET Select语句的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#中执行上面的select语句而不必使用嵌套的ifs?

我随着时间的推移发现一些VB.NET Select...Case结构不适用于C#,唯一的方法就是编写很多ifs。

例如,在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 

但是C#中没有switch构造允许你做这种事情。 你必须在环形交叉口中编码,如下所示:

 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来获取所需的操作。

原因? C#的switch需要各种case的常量。 这与VB.NET的Select Case不同,后者允许编写范围。

您正在寻找切换声明……

 switch (Object.Name.ToString()) { case "Name1": //Do something break; default: //default break; } 

请注意,中断是导入的,否则程序将会丢失。 您几乎可以在任何C#介绍中找到它…

使用switch语句。

 switch (object.Name.ToString()) { case "Name1": break; //Do something case "Name2": break; //Do something else default: break; //Do the default action } 

不要忘记,有一个免费的在线转换工具 ,允许您将VB.net转换为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; } 

摘自/参考文献: