C# GetType

Method

GetType is a method on object. It provides a Type object, one that indicates the most derived type of the object instance. This program helps us understand the base class and derived class relationship.

TypeObject

Tip:Base classes are described with transitive closure. This affects the types allowed as variables. GetType returns a type pointer.

Example

Note

First, this program uses the GetType method on a base type reference to more derived objects. It shows how transitive closure helps us understand how base classes relate to derived classes.

Here:The program shows that the GetType method returns the most derived object type of the instance.

Program that uses GetType on base type instance: C#

using System;

class A
{
}

class B : A
{
}

class C : B
{
}

class Program
{
    static void Main()
    {
	A a1 = new A();
	A a2 = new B();
	A a3 = new C();

	Console.WriteLine(a1.GetType());
	Console.WriteLine(a2.GetType());
	Console.WriteLine(a3.GetType());
    }
}

Output

A
B
C
Base keyword

The class A is used as base class. The class B derives from class A. And the class C derives from class B. The Main entry point executes and creates an instance of each class, but stores the references in the A type variables.

Next:The GetType method returns the most derived type of the instances, not the type of the variable.

Discussion

Question

Let's discuss the concept of transitive closure and how it applies to the class derivation system in the C# language and the example shown. The term "transitive closure" is a principle applied to the base class relationship.

As you traverse the derivation chain in the class hierarchy, each successive derived class points to the first base class. It also points to all other intermediate nodes. This is transitive closure.

And:This example shows how transitive closure applies when you assign a base class reference to a class derived over two levels (A to C).

Summary

The C# programming language

We demonstrated the GetType method when used with derived and base classes in the C# language. Further, we described the relationship of base classes and derived classes in the mathematical principle of transitive closure.

Review:GetType accesses the actual type of the object instance. It does not report the base types or the variable type.


C#: .NET: Reflection