10X Sale
kh logo
All Courses
  1. Tutorials
  2. Programming Tutorials

Data Types in C#

Updated on Sep 3, 2025
 
45,900 Views

The data types in C# are divided into three types. These are:

  1. Value Data Types - These are integer and floating point based. Some examples of value data types are int, char, float etc.
  2. Reference Data Types - These data types contain a reference to the variables and not the actual data. Some build in reference types are object, dynamic and string.
  3. Pointer Data Types - This store the memory address of another data type and the data can be accessed using pointers.

The following are the details about all the data types in C#:

Value Data Types

A data value can be assigned directly to value data types. They can contain both signed and unsigned literals. Some of the value data types are int, float and char, which contain integers, floating point numbers and alphabets respectively.

This table lists out all the available value data types:

Data Type

Represents

Memory Size

Range

Default Value

Bool

Boolean Value

1 byte

True or False

False

Byte

Unsigned Integer

1 byte

0 to 255

0

Char

Unicode character

1 byte

U +0000 to U +ffff

‘\0’

Short

Signed integer type

2 byte

-32,768 to 32,767

0

signed short

Signed integer type

2 byte

-32,768 to 32,767

0

unsigned short

Unsigned integer type

2 byte

0 to 65,535

0

int

Signed integer type

4 byte

-2,147,483,648 to 2,147,483,647

0

signed int

Signed integer type

4 byte

-2,147,483,648 to 2,147,483,647

0

unsigned int

Unsigned integer type

4 byte

0 to 4,294,967,295

0

long

Signed integer type

8 byte

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

0L

signed long

Signed integer type

8 byte

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

0

unsigned long

Unsigned integer type

8 byte

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

0

float

Single precision floating point type

4 byte

-3.4 x 1038 to + 3.4 x 1038

0.0F

double

Double-precision floating point type

8 byte

(+/-)5.0 x 10-324 to (+/-)1.7 x 10308

0.0D

decimal

Decimal values with 28-29 significant digits

16 byte

(-7.9 x 1028 to 7.9 x 1028) / 100 to 28

0.0M

Table: Value Data Types in C#

This C# program demonstrates different value data types:

using System;
public class Demo {
 public static void Main() {
   bool boolVar = true; // bool
   byte byteVar = 255; // byte
   short shortVar = -66; // short
   ushort ushortVar = 66; // unsigned short
   int intVar = -1000; // integer
   uint uintVar = 1000; // unsigned int
   long longVar = -56000; // long
   ulong ulongVar = 56000; // Unsigned long
   float floatVar = 160.54 F; // float
   double doubleVar = 13782.57543 D; // double
   char charVar = 'A'; // character
   Console.WriteLine("Value Data Types in C#");
   Console.WriteLine(boolVar);
   Console.WriteLine(byteVar);
   Console.WriteLine(shortVar);
   Console.WriteLine(ushortVar);
   Console.WriteLine(intVar);
   Console.WriteLine(uintVar);
   Console.WriteLine(longVar);
   Console.WriteLine(ulongVar);
   Console.WriteLine(floatVar);
   Console.WriteLine(doubleVar);
   Console.WriteLine(charVar);
 }
}

Source Code: Program to work with Value data types in C#

The output of the above program is as follows:

Value Data Types in C#
True
255
-66
66
-1000
1000
-56000
56000
160.54
13782.57543
A

Reference Data Types

The reference data types contain a reference to the variables and not the actual data stored in the variables i.e. they refer to a memory location.

The different reference data types in C# are:

1. Object Types

Every type in C# derives from the object class type, whether directly or indirectly. The values of different data types are treated as objects by using boxing and unboxing. It is boxing when the value type is converted to object type and unboxing when object type is converted to value type.

This C# program that demonstrates boxing and unboxing:

using System;
class Demo
{
   static void Main()
   {
       int val1 = 100;
       object obj = val1;     // This is Boxing
       int val2 = (int)obj;     // This is Unboxing
   }
}

Source Code: Program to implement Boxing and Unboxing in C#

2. Array Types

Arrays are a collection of data types of the same type. They are stored as contiguous memory locations. The lowest address contains the first element and the highest address contains the last element.

Here is a C# program that demonstrates arrays:

using System;
public class Example
{
   public static void Main(string[] args)
   {
       int[] a = new int[] {1,2,3,4};
       for(int i=0;i<4;i++)
Console.WriteLine(a[i]);
   }
}

Source Code: Program to work with Array Types in C#

3. String Types

A string is a sequence of zero or more unicode characters in C#. It is derived from the object type like all C# types.

A program that demonstrates strings is as follows:

using System;
public class Demo
{
   public static void Main()
   {
       string a = "Hello";  
       Console.WriteLine(a);    // Displays Hello
   }
}

Source Code: Program to work with String Types in C#

Pointer Data Types

The pointer data types in C# store the address of another data type. They are used in an unsafe context i.e. an unsafe modifier is required in the program to use pointers..

The syntax of the pointer data type is as follows:

type* identifier;

A program that demonstrates pointers is as follows:

using System;
namespace PointerDemo {
  class Example {
     static unsafe void Main(string[] args) {
        int val = 100;
        int* ptr = &val;
        Console.WriteLine("Data value is: {0} ",  val);
        Console.WriteLine("Address of the data value is: {0}",  (int)ptr);
     }
  }
}

Source Code: Program to implement Pointer Types in C#

The output of the above code is as follows:

Note: Unsafe code may only appear if you compile with /unsafe
Data value is: 100
Address of the data value is: 74638937
+91

By Signing up, you agree to ourTerms & Conditionsand ourPrivacy and Policy

Get your free handbook for CSM!!
Recommended Courses