VB.NET选择...在C#中等效的Case语句

Ale*_*fie 18 c# vb.net vb.net-to-c#

我刚开始使用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
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.


感谢到目前为止的输入,如果我将几个控件挂钩到一个事件处理程序,如下所示,我想对每个控件执行稍微不同的操作:

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
Run Code Online (Sandbox Code Playgroud)

有没有办法在C#中执行上面的select语句而不必使用嵌套的ifs?

Ale*_*fie 16

我随着时间的推移发现一些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
Run Code Online (Sandbox Code Playgroud)

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

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;
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您正在使用Double或由连续而非离散值组成的任何类型,您将必须使用ifs来获取所需的操作.

原因?C#switch需要各种cases的常量.这与Select Case允许写入范围的VB.NET不同.

  • 由于透视,它只是圆的.例如,在非数字情况下,switch语句可能更好. (2认同)

Pad*_*ddy 9

您正在寻找切换声明......

switch (Object.Name.ToString())
{
   case  "Name1":
     //Do something
     break;
   default:
     //default
     break;
}
Run Code Online (Sandbox Code Playgroud)

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


Kla*_*sen 5

使用switch声明.

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

不要忘记,有一个免费的在线转换工具,允许您将VB.net转换为C#,反之亦然.