Primitives

Microsoft .NET Framework, ASP.NET, Visual C# (CSharp, C Sharp, C-Sharp) Developer Training, Visual Studio


Jump to: navigation, search

A C# primitive is a predefined, intrinsic data type. Although the primitives are declared as C# keywords, the keywords are actually aliases for types in the .NET Framework Class. Primitives are value types and are allocated space on the stack—except for the string type. The string type is—in fact—a class and is, therefore, allocated space on the heap.

Despite being value types, primitives are objects complete with interfaces and public methods.


C# Primitives
Type Primitive Usage Range
bool System.Boolean boolean true, false
byte System.Byte 8 bit integer 0 - 255
char System.Char 16 bit Unicode character /u0000 - /uffff
decimal System.Decimal 128 bit decimal +/-1.0x10-28 to +/-7.9x10+28 precision of 28-29 digits
double System.Double 64 bit floating point -1.79769313486232e308 to 1.79769313486232e308
float System.Single 32 bit floating point +/-1.5x10-45 to +/-3.4x10+38 precision of 7 digits
int System.Int32 32 bit integer -2,147,483,648 to 2,147,483,647
long System.Int64 64 bit integer -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
sbyte System.SByte 8 bit integer -128 to 127
short System.Int16 16 bit integer -32,768 to 32,767
string System.String - immutable, specified length
uint System.UInt32 32 bit unsigned integer 0 to 4,294,967,295
ulong System.UInt64 64 bit unsigned integer 0 to 18,446,744,073,709,551,615
ushort System.UInt16 16 bit unsigned integer 0 to 65,535


Visual C# Best Practices

For the most efficient storage, choose the data type which is just big enough to hold your data but no bigger. For example, for data which will range from 1 to 100, choose byte.

For the most efficient execution speed, choose a standard data type which may require fewer conversions. For example, depending on your application, it may be faster to put that same data in an int to avoid time-consuming upcasts or downcasts during calculations.



Personal tools