Type.GetType(“System.Integer”) returns null value (Nothing)

Posted by Blake on 7/25/2011

VB in it’s classic state (pre .Net) had an Integer data type. So, in VB.Net you can still use Integer in the syntax (Dim x As Integer) but it will be using a System.Int32. Now, if you try to do a Type.GetType(“System.Integer”) it will return a null value whereas Type.GetType(“System.Int32”) will correctly return a type initialized to Int32. If you’re dynamically creating types then using the GetType to the appropriate CLR type is a must. Here are two links, one for .Net 3.5 and one for .Net 4.0 showing the data types.

  1. http://msdn.microsoft.com/en-us/library/47zceaw7(v=VS.90).aspx
  2. http://msdn.microsoft.com/en-us/library/47zceaw7(v=VS.100).aspx

For posterity, here is the table reference in case the above links stop working:

Visual Basic type Common language runtime type structure Nominal storage allocation Value range
Boolean Boolean Depends on implementing platform True or False
Byte Byte 1 byte 0 through 255 (unsigned)
Char (single character) Char 2 bytes 0 through 65535 (unsigned)
Date DateTime 8 bytes 0:00:00 (midnight) on January 1, 0001 through 11:59:59 PM on December 31, 9999
Decimal Decimal 16 bytes 0 through +/-79,228,162,514,264,337,593,543,950,335 (+/-7.9...E+28) with no decimal point; 0 through +/-7.9228162514264337593543950335 with 28 places to the right of the decimal; smallest nonzero number is +/-0.0000000000000000000000000001 (+/-1E-28)
Double (double-precision floating-point) Double 8 bytes -1.79769313486231570E+308 through -4.94065645841246544E-324 for negative values; 4.94065645841246544E-324 through 1.79769313486231570E+308 for positive values
Integer Int32 4 bytes -2,147,483,648 through 2,147,483,647 (signed)
Long (long integer) Int64 8 bytes -9,223,372,036,854,775,808 through 9,223,372,036,854,775,807 (9.2...E+18 ) (signed)
Object Object (class) 4 bytes on 32-bit platform 8 bytes on 64-bit platform Any type can be stored in a variable of type Object
SByte SByte 1 byte -128 through 127 (signed)
Short (short integer) Int16 2 bytes -32,768 through 32,767 (signed)
Single (single-precision floating-point) Single 4 bytes -3.4028235E+38 through -1.401298E-45 for negative values; 1.401298E-45 through 3.4028235E+38 for positive values
String (variable-length) String (class) Depends on implementing platform 0 to approximately 2 billion Unicode characters
UInteger UInt32 4 bytes 0 through 4,294,967,295 (unsigned)
ULong UInt64 8 bytes 0 through 18,446,744,073,709,551,615 (1.8...E+19 ) (unsigned)
User-Defined (structure) (inherits from ValueType) Depends on implementing platform Each member of the structure has a range determined by its data type and independent of the ranges of the other members
UShort UInt16 2 bytes 0 through 65,535 (unsigned)