从"选择......案例"声明中省略"案例"

hel*_*ich 10 vb.net syntax

这不是一个真正的问题,但更多的是我的好奇心,我无法通过自己的方式解决.我肯定不会失去任何睡眠.

在VB.NET,开关语句的语法(MSDN上的记录在这里):

Select [ Case ] testexpression
[ Case expressionlist
    [ statements ] ]
[ Case Else
    [ elsestatements ] ]
End Select
Run Code Online (Sandbox Code Playgroud)

请注意,在第一行中,Case是方括号,这意味着它是可选的.

实际上,下面的示例编译和执行的方式与Case关键字的包含方式相同,至少在我尝试过的基本示例中:

Select myIntVar
    Case 0
        Return "Nothing"
    Case 1
        Return "Just one"
    Case Else
        Return "Something else"
End Select
Run Code Online (Sandbox Code Playgroud)

因此我的问题如下:除了语法之外,用和打开switch语句之间有什么区别吗?SelectSelect Case

hel*_*ich 6

我做了一个小实验.我编写了一个像这样的小型控制台应用程序:

Module Module1

    Sub Main()
        Dim myStr As String = GetString(1)
    End Sub

    Private Function GetString(myIntVar) As String
        Select myIntVar
            Case 0
                Return "Nothing"
            Case 1
                Return "Just one"
            Case Else
                Return "Something else"
        End Select
    End Function

End Module
Run Code Online (Sandbox Code Playgroud)

第一次运行如上图所示,然后我再次编译插入Case关键字.我反汇编了两个创建的可执行文件ILDasm,并将GetString函数的IL粘贴到这个在线差异网站:http://www.diffchecker.com/9ef7z423

在我看来Select Case,简单的旧版本Select纯粹是语法差异(这当然不包括Select在LINQ查询中的用法).