Visual Basic相当于C#类型检查

Ste*_*ven 50 c# vb.net

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

data.GetType() == typeof(System.Data.DataView)
Run Code Online (Sandbox Code Playgroud)

注意:变量data声明为IEnumerable.

Pow*_*ord 77

据我回忆

TypeOf data Is System.Data.DataView
Run Code Online (Sandbox Code Playgroud)

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

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

data.GetType() Is GetType(System.Data.DataView)
Run Code Online (Sandbox Code Playgroud)

  • 但是,请注意,如果VB"is"与C#"is"类似,那么如果数据是DataView或从DataView派生,则会出现这种情况.如果数据特别是DataView对象,则原始代码才为真. (3认同)
  • @James:VB的`Is`实际上与`object.ReferenceEquals`相同.但是`Typeof ... Is`确实等于C#的`is`运算符. (2认同)

Rom*_*kov 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)

      (除了涉及的类型实现了一个演员操作员)