vb.net - 在 VB.NET 中选择对象类型的大小写

标签 vb.net switch-statement select-case

我不确定这是否有效 C#,但希望您能明白。 :)

switch (msg.GetType()) {
    case ClassA:
        // blah
    case ClassB:
        // blah 2
    case ClassC:
        // blah 3
}

如何使用 VB.NET 的 Select Case 来切换对象的类型?

我知道有些人可能会建议使用 polymorphism ,但我使用的是小消息类的层次结构,因此这在我的情况下确实不起作用。

最佳答案

使用 VB 2010,对于面向 .NET Framework 4 及更高版本的项目,您现在可以执行以下操作:

Select Case msg.GetType()
    Case GetType(ClassA)
End Select

在早期的 VB 版本中,它不起作用,因为您无法比较两种类型是否相等。您必须使用 Is 关键字检查它们是否指向相同的引用。在 Select Case 中不可能执行此操作,除非您按照 Michael 的建议使用 Name 或 FullName 等类型的属性进行比较。不过,您可以组合使用 If 和 ElseIf:

Dim type = msg.GetType()
If type Is GetType(ClassA)
    ...
ElseIf type Is GetType(ClassB)
    ...
...
End If

关于vb.net - 在 VB.NET 中选择对象类型的大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1301881/

相关文章:

VB.Net Switch 语句,在每种情况下都包含代码段

vb.net - Silverlight-DataGrid 控件-选择更改事件干扰排序

c - 作为 switch 语句实现的菜单

javascript - 在 coffeescript 中使用 switch 进行变量赋值

sql - 创建动态选择案例 (vb)

sql - 如何创建一个根据 select 语句结果返回 bool 值的函数

C# 开关与 VB 案例语句

vb.net - 为什么 Visual Studio 2012 不允许您在创建新的 VB.NET 文件时选择结构?结构是否已弃用?

windows - Windows 8 平板电脑上的图像捕获

asp.net - 加密web.config后出错