The typeof operator

The typeof operator is used to obtain the System.Type object for a type. typeof-expression : typeof(type)typeof(void)
The first form of typeof-expression consists of a typeof keyword followed by a parenthesized type. The result of an expression of this form is the System.Type object for the indicated type. There is only one System.Type object for any given type.

[Note: This means that for type T, typeof(T) == typeof(T) is always true. end note]

The second form of typeof-expression consists of a typeof keyword followed by a parenthesized void keyword. The result of an expression of this form is the System.Type object that represents the absence of a type. The type object returned by typeof(void) is distinct from the type object returned for any type.

[Note: This special type object is useful in class libraries that allow reflection onto methods in the language, where those methods wish to have a way to represent the return type of any method, including void methods, with an instance of System.Type. end note]

[Example: The example using System; class Test { static void Main() { Type[] t = { typeof(int), typeof(System.Int32), typeof(string), typeof(double[]), typeof(void) }; for (int i = 0; i < t.Length; i++) { Console.WriteLine(t[i].FullName); } } } produces the following output: System.Int32 System.Int32 System.String System.Double[] System.Void
Note that int and System.Int32 are the same type. end example]