is C# with Example



is C# with Example

Checks if an object is compatible with a given type, i.e. if an object is an instance of the BaseInterface type, or a 
type that derives from BaseInterface: 
interface BaseInterface {} 
class BaseClass : BaseInterface {} 
class DerivedClass : BaseClass {} 
var d = new DerivedClass(); 
Console.WriteLine(d is DerivedClass); // True 
Console.WriteLine(d is BaseClass); // True 
Console.WriteLine(d is BaseInterface); // True 
Console.WriteLine(d is object); // True 
Console.WriteLine(d is string); // False 
var b = new BaseClass(); 
Console.WriteLine(b is DerivedClass); // False 
Console.WriteLine(b is BaseClass); // True 
 

Console.WriteLine(b is BaseInterface); // True 
Console.WriteLine(b is object); // True 
Console.WriteLine(b is string); // False 
If the intent of the cast is to use the object, it is best practice to use the as keyword' 
interface BaseInterface {} 
class BaseClass : BaseInterface {} 
class DerivedClass : BaseClass {} 
var d = new DerivedClass(); 
Console.WriteLine(d is DerivedClass); // True - valid use of 'is' 
Console.WriteLine(d is BaseClass); // True - valid use of 'is' 
if(d is BaseClass){ 
var castedD = (BaseClass)d; 
castedD.Method(); // valid, but not best practice 
} 
var asD = d as BaseClass; 
if(asD!=null){ 
asD.Method(); //preferred method since you incur only one unboxing penalty 
} 
But, from C# 7 pattern matching feature extends the is operator to check for a type and declare a new variable at 
the same time. Same code part with C# 7 : 
Version ≥ 7.0 
if(d is BaseClass asD ){ 
asD.Method(); 
} 

0 Comment's

Comment Form