3.16. Determining a Variable’s Type with the is Operator
Problem
A method exists
that creates an object from one of several types of classes. This
object is then returned as a generic object type.
Based on the type of object that was initially created in the method,
you want to branch to different logic.
Solution
Use the is operator. This operator returns a
Boolean true or false
indicating whether the cast is legal, but the cast never actually
occurs.
Suppose we have four different point classes:
public class Point2D {...}
public class Point3D {...}
public class ExPoint2D : Point2D {...}
public class ExPoint3D : Point3D {...}Next, we have a method that accepts an integer value and, based on this value, one of the four specific point types are returned:
public object CreatePoint(int pointType)
{
switch (pointType)
{
case 0:
return (new Point2D( ));
case 1:
return (new Point3D( ));
case 2:
return (new ExPoint2D( ));
case 3:
return (new ExPoint3D( ));
default:
return (null);
}
}Finally, we have a method that calls the
CreatePoint method. This method handles the point
object type returned from the CreatePoint method
based on the actual point object
returned:
public void CreateAndHandlePoint( ) { // Create a new point object and return it object retObj = CreatePoint(3); // Handle the point object based on its actual type if (retObj is ExPoint2D) { Console.WriteLine("Use the ExPoint2D type"); } else if (retObj is ExPoint3D) { Console.WriteLine("Use the ExPoint3D type"); } else if (retObj ...