gpt4 book ai didi

VB.NET Switch 语句 GoTo 案例

转载 作者:行者123 更新时间:2023-12-03 10:10:32 27 4
gpt4 key购买 nike

我正在 VB.NET 中编写一些使用 switch 语句的代码,但在其中一种情况下它需要跳转到另一个块。在 C# 中,它看起来像这样:

switch (parameter)
{
case "userID":
// does something here.
case "packageID":
// does something here.
case "mvrType":
if (otherFactor)
{
// does something here.
}
else
{
goto default;
}
default:
// does some processing...
break;
}

但是,我不知道如何将其转换为 VB.NET。我试过这个:
Select Case parameter 
Case "userID"
' does something here.
Case "packageID"
' does something here.
Case "mvrType"
If otherFactor Then
' does something here.
Else
GoTo Case Else
End If
Case Else
' does some processing...
Exit Select
End Select

但是当我这样做时,我得到一个编译器错误:“预期标识符”。 “Case”下有一条波浪线。有任何想法吗?

另外,在这种情况下使用 GoTo 语句是错误的吗?似乎任何其他方式我都必须重新编写它。

我已将代码更改为如下:
If otherFactor AndAlso parameter = "mvrType" Then 
'does something here
Else
' My original "Select Case statement" here without the case for "mvrType"
End If

最佳答案

在 VB.NET 中没有我能找到的等价物。对于这段代码,您可能希望在 Reflector 中打开它并将输出类型更改为 VB 以获得所需代码的准确副本。例如,当我将以下内容放入 Reflector 时:

switch (args[0])
{
case "UserID":
Console.Write("UserID");
break;
case "PackageID":
Console.Write("PackageID");
break;
case "MVRType":
if (args[1] == "None")
Console.Write("None");
else
goto default;
break;
default:
Console.Write("Default");
break;
}

它给了我以下 VB.NET 输出。
Dim CS$4$0000 As String = args(0)
If (Not CS$4$0000 Is Nothing) Then
If (CS$4$0000 = "UserID") Then
Console.Write("UserID")
Return
End If
If (CS$4$0000 = "PackageID") Then
Console.Write("PackageID")
Return
End If
If ((CS$4$0000 = "MVRType") AndAlso (args(1) = "None")) Then
Console.Write("None")
Return
End If
End If
Console.Write("Default")

如您所见,您可以使用 If 语句完成相同的 switch case 语句。通常我不推荐这样做,因为它更难理解,但 VB.NET 似乎不支持相同的功能,并且使用 Reflector 可能是获得所需代码的最佳方式很多痛苦。

更新:

刚刚确认您不能在 VB.NET 中做完全相同的事情,但它确实支持其他一些有用的东西。看起来 IF 语句转换是你最好的选择,或者可能是一些重构。这是 Select...Case 的定义

http://msdn.microsoft.com/en-us/library/cy37t14y.aspx

关于VB.NET Switch 语句 GoTo 案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/820104/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com