以下C#布尔表达式的Visual Basic等价物是什么?
data.GetType() == typeof(System.Data.DataView)
注意:变量data
声明为IEnumerable
。
答案 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#程序员的好处的摘要:
val is SomeType
在VB.NET中:TypeOf val Is SomeType
与Is
不同,这只能被视为Not TypeOf val Is SomeType
typeof(SomeType)
在VB.NET中:GetType(SomeType)
val.GetType() == typeof(SomeType)
在VB.NET中:val.GetType() = GetType(SomeType)
(尽管Is
也有效,请参阅下一步)
val.ReferenceEquals(something)
在VB.NET中:val Is something
可以很好地否定:val IsNot something
val as SomeType
在VB.NET中:TryCast(val, SomeType)
(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)