Visual Basic相当于C#类型检查

时间:2010-04-12 20:09:52

标签: c# vb.net

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

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

注意:变量data声明为IEnumerable

4 个答案:

答案 0 :(得分:76)

我记得

TypeOf data Is System.Data.DataView

编辑:
正如James Curran所指出的那样,如果数据也是System.Data.DataView的子类型,那么这就有效。

如果您只想将其限制为System.Data.DataView,这应该有效:

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

答案 1 :(得分:36)

我想我会发布一篇关于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)

(涉及的类型实现了强制转换操作符除外)

答案 2 :(得分:2)

你也可以使用 TryCast ,然后检查一下,这样你可以稍后使用上的转换类型。 如果您不需要这样做,请不要这样做,因为其他人效率更高。

见这个例子:

<强> VB:

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

<强> C#

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

答案 3 :(得分:1)

试试这个。

GetType(Foo)