Predefined Types

All of C#’s predefined types alias types found in the System namespace. For example, there is only a syntactic difference between these two statements:

int i = 5;
System.Int32 i = 5;

Integral Types

This table lists the integral types and their features:

C# type

System type

Size

Signed

sbyte

System.SByte

1 byte

Yes

short

System.Int16

2 bytes

Yes

int

System.Int32

4 bytes

Yes

long

System.Int64

8 bytes

Yes

byte

System.Byte

1 byte

No

ushort

System.UInt16

2 bytes

No

uint

System.UInt32

4 bytes

No

ulong

System.UInt64

8 bytes

No

For unsigned integers that are n bits wide, possible values range from 0 to 2. For signed integers that are n bits wide, their possible values range from -2n-1 to 2n-1-1. Integer literals can use either decimal or hexadecimal notation:

int x = 5;
ulong y = 0x1234AF; // prefix with 0x for hexadecimal

When an integral literal is valid for several possible integral types, the default type that is chosen goes in this order: int, uint, long, and ulong. The following suffixes may be used to specify the chosen type explicitly:

U

uint or ulong

L

long or ulong

UL

ulong

Integral conversions

An implicit conversion between integral types is permitted when the type to which you’d like to convert contains every possible value of the type to convert. Otherwise, an explicit conversion is required. For instance, you can implicitly convert an int to a long, but must explicitly convert an int ...

Get C# Language Pocket Reference now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.