关于vb.net:Visual基本相当于C#类型检查

Visual Basic equivalent of C# type check

以下C布尔表达式的Visual Basic等价物是什么?

1
data.GetType() == typeof(System.Data.DataView)

注:变量data声明为IEnumerable


我回忆起

1
TypeOf data Is System.Data.DataView

编辑:正如James Curran指出的那样,如果数据也是System.Data.DataView的一个子类型,那么这也可以工作。

如果只想将其限制为System.Data.DataView,那么应该可以:

1
data.GetType() Is GetType(System.Data.DataView)


我只是想为C程序员的利益发表一篇摘要:

C val is SomeType

&vb.net中:TypeOf val Is SomeType

&与Is不同,这只能作为Not TypeOf val Is SomeType来否定。

C typeof(SomeType)

&vb.net中:GetType(SomeType)

C val.GetType() == typeof(SomeType)

&vb.net中:val.GetType() = GetType(SomeType)

&(尽管Is也有效,见下一步)

C val.ReferenceEquals(something)

&vb.net中:val Is something

&可以很好地否定:val IsNot something

C val as SomeType

&vb.net中:TryCast(val, SomeType)

C (SomeType) val

&vb.net中:DirectCast(val, SomeType)

&(涉及类型实现强制转换运算符的情况除外)


您也可以使用Trycast,然后检查是否为空,这样您以后就可以使用强制类型了。如果你不需要这样做,不要这样做,因为其他人更有效率。

请参见此示例:

VB:

1
2
3
4
    Dim pnl As Panel = TryCast(c, Panel)
    If (pnl IsNot Nothing) Then
        pnl.Visible = False
    End If

C.*

1
2
3
4
Panel pnl = c as Panel;
if (pnl != null) {
    pnl.Visible = false;
}


试试这个。

1
GetType(Foo)