System.Type
The abstract class Type
, defined in the System
namespace, is an abstraction of a .NET CLR type. Every .NET type, be it a .NET-provided type (from value types such as integers and enums to classes and interfaces) or a developer-defined type, has a corresponding unique Type
value.
Tip
The ability to uniquely identify a type by means of a Type
object is analogous to the COM idea of identifying the type of a component by means of its unique CLSID.
The canonical base class of any .NET type is System.Object
. Object
(or just object
in C#) has built-in support for retrieving the Type
associated with any object by calling its GetType()
method:
public class Object { public Type GetType(); //Other methods }
Having GetType()
present in object
allows you to call it on any .NET object:
public class MyClass {...} int number = 0; MyClass obj = new MyClass(); Type type1 = number.GetType(); Type type2 = obj.GetType();
Different instances of the same type must return the same Type
value:
int number1 = 1; int number2 = 2; Type type1 = number1.GetType(); Type type2 = number2.GetType(); Debug.Assert(type1 == type2);
The typeof
operator allows you to retrieve the Type
associated with a type directly, without instantiating an object of that type:
Type type1 = typeof(int); Type type2 = typeof(MyClass);
Type
is your gateway to obtaining the metadata associated with a given type. To start, Type.ToString()
returns the type’s name:
Type type = typeof(MyClass); string name = type.ToString(); Debug.Assert(name ...
Get Programming .NET Components, 2nd Edition 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.