Built-in Data Types

C# is a strongly-typed language. Before a value can be stored in a variable, the type of the variable must be specified, as in the following examples:

int a = 1;
string s = "Hello";
XmlDocument tempDocument = new XmlDocument();

Note that the type must be specified both for simple, built-in types such as an int, and for complex or custom types such as XmlDocument.

C# includes support for the following built-in data types:

Data Type

Range

byte

0 .. 255

sbyte

-128 .. 127

short

-32,768 .. 32,767

ushort

0 .. 65,535

int

-2,147,483,648 .. 2,147,483,647

uint

0 .. 4,294,967,295

long

-9,223,372,036,854,775,808 .. 9,223,372,036,854,775,807

ulong

0 .. 18,446,744,073,709,551,615

float

-3.402823e38 .. 3.402823e38

double

-1.79769313486232e308 .. 1.79769313486232e308

decimal

-79228162514264337593543950335 .. 79228162514264337593543950335

char

A Unicode character.

string

A string of Unicode characters.

bool

True or False.

object

An object.

These data type names are aliases for predefined types in the System namespace. They are listed in the section Built-In Types Table (C# Reference). All these types, with the exception of object and string, are value types. For more information, see Value and Reference Types.

Using Built-in Data Types

Built-in data types are used within a C# program in several ways.

As variables:

int answer = 42;
string greeting = "Hello, World!";

As constants:

constĀ int speedLimit = 55;
constĀ double pi = 3.14159265358979323846264338327950;

As return values and parameters:

long CalculateSum(int a, int b)
{
    long result = a + b;
    return result;
}

To define your own data types, use Classes, Enumerations or Structs.

Converting Data Types

Converting between data types can be done implicitly, in which the conversion is done automatically by the compiler, or explicitly using a cast, in which the programmer forces the conversion, and assumes the risk of losing information.

For example:

int i = 0;
double d = 0;

i = 10;
d = i;        // An implicit conversion

d = 3.5;
i = (int) d;  // An explicit conversion, or "cast"

See Also

Concepts

C# Language Primer

Variables and Constants

Reference

Built-In Types Table (C# Reference)

Other Resources

Formatting Numeric Results Table (C# Reference)