这不是一个真正的问题,但更多的是我的好奇心,我无法通过自己的方式解决.我肯定不会失去任何睡眠.
在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
我做了一个小实验.我编写了一个像这样的小型控制台应用程序:
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查询中的用法).