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.