What is the VB.NET equivalent of the C# “is” keywo

2019-02-07 16:26发布

问题:

I need to check if a given object implements an interface. In C# I would simply say:

if (x is IFoo) { }

Is using a TryCast() and then checking for Nothing the best way?

回答1:

Try the following

if TypeOf x Is IFoo Then 
  ...


回答2:

Like this:

If TypeOf x Is IFoo Then


回答3:

The direct translation is:

If TypeOf x Is IFoo Then
    ...
End If

But (to answer your second question) if the original code was better written as

var y = x as IFoo;
if (y != null)
{
   ... something referencing y rather than (IFoo)x ...
}

Then, yes,

Dim y = TryCast(x, IFoo)
If y IsNot Nothing Then
   ... something referencing y rather than CType or DirectCast (x, IFoo)
End If

is better.