## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

No credit card required

# 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 ...`

## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

No credit card required