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)