
Type describes data types. It stores C# type information in a variable, property or field or for usage as an argument. The Type class provides a representation of the program's metadata, which is a description of its structure but not the instructions that are executed.
This C# article covers the Type type from the System namespace. It provides example code.
First, the Type class is found in the System namespace in the .NET Framework base class library. You can use Type variables in the same way as other variables such as string or int. One difference is that you can assign Type variables to the result of a typeof expression. You will find functions that receive a Type parameter as an argument.
Program that uses Type variables [C#]
using System;
class Program
{
static void Main()
{
// Use type variables.
// ... Then pass the variables as an argument.
Type type1 = typeof(string[]);
Type type2 = "string".GetType();
Type type3 = typeof(Type);
Test(type1);
Test(type2);
Test(type3);
}
static void Test(Type type)
{
// Print some properties of the Type formal parameter.
Console.WriteLine("IsArray: {0}", type.IsArray);
Console.WriteLine("Name: {0}", type.Name);
Console.WriteLine("IsSealed: {0}", type.IsSealed);
Console.WriteLine("BaseType.Name: {0}", type.BaseType.Name);
Console.WriteLine();
}
}
Output
IsArray: True
Name: String[]
IsSealed: True
BaseType.Name: Array
IsArray: False
Name: String
IsSealed: True
BaseType.Name: Object
IsArray: False
Name: Type
IsSealed: False
BaseType.Name: MemberInfo
Description. The program shows that you can use Type variables and assign them to the result of evaluations of the typeof operator. The Type variables are loaded onto the evaluation stack in the same way as other variables are. The program shows a Test method that receives a formal parameter of Type type; you can pass it typeof expressions directly, or any expression that evaluates to a Type pointer. The program also shows some properties of the Type class being accessed.
Typeof Operator
In the C# language, the Type class is not actually used in the inheritance and class-based system. Instead, classes inherit from the Object type. The Type type actually is a representation of the metadata in the program, which is data about the program that is stored in a relational database. Therefore, the Type class can be seen as a sort of information about the program, but not the program itself.
Type objects can be stored as fields and static fields. They can be passed as arguments and used as local variables. Type data is stored on the managed heap because it is an object reference. In the .NET Framework, some functions receive Type arguments, making Type variables useful.
Reflection