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 ...
Get C# Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.