Visual Basic等效的C#types检查

什么是下面的C#布尔expression式的Visual Basic等价物?

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

注意:variablesdata被声明为IEnumerable

据我回忆

 TypeOf data Is System.Data.DataView 

编辑:
正如James Curran所指出的那样,如果数据也是System.Data.DataView的子types,那么这个方法就行得通。

如果你想限制只有System.Data.DataView,这应该工作:

 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)

(虽然也是有用的,请看下)

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)

(除非涉及的types实施投射操作员)

你也可以使用TryCast ,然后检查没有, 这样你可以稍后使用铸造types如果你不需要这样做,不要这样做,因为其他人更有效率。

看到这个例子:

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; } 

尝试这个。

 GetType(Foo)