top
upGrad KnowledgeHut SkillFest Sale!

Search

C# Tutorial

The data types in C# are divided into three types. These are:Value Data Types - These are integer and floating point based. Some examples of value data types are int, char, float etc.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.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 TypesA 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.  A table that lists all the available value data types is as follows:Table: Value Data Types in C#Data TypeRepresentsMemory SizeRangeDefault ValueBoolBoolean Value1 byteTrue or FalseFalseByteUnsigned Integer1 byte0 to 2550CharUnicode character1 byteU +0000 to U +ffff‘\0’ShortSigned integer type2 byte-32,768 to 32,7670signed shortSigned integer type2 byte-32,768 to 32,7670unsigned shortUnsigned integer type2 byte0 to 65,5350intSigned integer type4 byte-2,147,483,648 to 2,147,483,6470signed intSigned integer type4 byte-2,147,483,648 to 2,147,483,6470unsigned intUnsigned integer type4 byte0 to 4,294,967,2950longSigned integer type8 byte-9,223,372,036,854,775,808 to 9,223,372,036,854,775,8070Lsigned longSigned integer type8 byte-9,223,372,036,854,775,808 to 9,223,372,036,854,775,8070unsigned longUnsigned integer type8 byte0 to 18,446,744,073,709,551,6150floatSingle precision floating point type4 byte-3.4 x 1038 to + 3.4 x 10380.0FdoubleDouble-precision floating point type8 byte(+/-)5.0 x 10-324 to (+/-)1.7 x 103080.0DdecimalDecimal values with 28-29 significant digits16 byte(-7.9 x 1028 to 7.9 x 1028) / 100 to 280.0MA C# program that demonstrates different value data types is as follows:Source Code: Program to work with Value data types in C#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);  } }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 AReference Data TypesThe 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 TypesEvery 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.A program that demonstrates boxing and unboxing is as follows:Source Code: Program to implement Boxing and Unboxing in C#using System; class Demo {    static void Main()    {        int val1 = 100;        object obj = val1;     // This is Boxing        int val2 = (int)obj;     // This is Unboxing    } }2. Array TypesArrays 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.A program that demonstrates arrays is as follows:Source Code: Program to work with Array Types in C#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]);    } }3. String TypesA 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:Source Code: Program to work with String Types in C#using System; public class Demo {    public static void Main()    {        string a = "Hello";          Console.WriteLine(a);    // Displays Hello    } }Pointer Data TypesThe 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:Source Code: Program to implement Pointer Types in C#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);      }   } }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
logo

C# Tutorial

Data Types in C#

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.  

A table that lists all the available value data types is as follows:


Table: Value Data Types in C#

Data TypeRepresentsMemory SizeRangeDefault Value
BoolBoolean Value1 byteTrue or FalseFalse
ByteUnsigned Integer1 byte0 to 2550
CharUnicode character1 byteU +0000 to U +ffff‘\0’
ShortSigned integer type2 byte-32,768 to 32,7670
signed shortSigned integer type2 byte-32,768 to 32,7670
unsigned shortUnsigned integer type2 byte0 to 65,5350
intSigned integer type4 byte-2,147,483,648 to 2,147,483,6470
signed intSigned integer type4 byte-2,147,483,648 to 2,147,483,6470
unsigned intUnsigned integer type4 byte0 to 4,294,967,2950
longSigned integer type8 byte-9,223,372,036,854,775,808 to 9,223,372,036,854,775,8070L
signed longSigned integer type8 byte-9,223,372,036,854,775,808 to 9,223,372,036,854,775,8070
unsigned longUnsigned integer type8 byte0 to 18,446,744,073,709,551,6150
floatSingle precision floating point type4 byte-3.4 x 1038 to + 3.4 x 10380.0F
doubleDouble-precision floating point type8 byte(+/-)5.0 x 10-324 to (+/-)1.7 x 103080.0D
decimalDecimal values with 28-29 significant digits16 byte(-7.9 x 1028 to 7.9 x 1028) / 100 to 280.0M

A C# program that demonstrates different value data types is as follows:

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

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);
 }
}

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.

A program that demonstrates boxing and unboxing is as follows:

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

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

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.

A program that demonstrates arrays is as follows:

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

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]);
   }
}

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:

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

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

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:

Source Code: Program to implement Pointer Types in C#

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);
     }
  }
}

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

Leave a Reply

Your email address will not be published. Required fields are marked *

Comments

austin faith

Avery good write-up. Please let me know what are the types of C# libraries used for AI development.

kariya arti

very satisfied!!

jean-Francois Michaud

Good tutorial. Small question: Say, there is : enum numbers { one, two, three} and a string field_enum ="one" how would I from the variable field_enum have a response with value numbers.one so that it can be treated as an enum and not as a string. making a list from the enum, and loop into the list. is not elegant... and may not work is forced value on field is forced ( one = 100).

Kshitiz

Hi Team Knowledge Hut, Thank you for such an informative post like this. I am completely new to this digital marketing field and do not have much idea about this, but your post has become a supportive pillar for me. After reading the blog I would expect to read more about the topic. I wish to get connected with you always to have updates on these sorts of ideas. Regards, Kshitiz

Ed

The reason abstraction can be used with this example is because, the triangle, circle. Square etc can be defined as a shape, for example.....shape c = new circle(5,0)...the abstract object c now points at the circle class. Thus hiding implementation

Suggested Tutorials

Swift Tutorial

Introduction to Swift Tutorial
Swift Tutorial

Introduction to Swift Tutorial

Read More

R Programming Tutorial

R Programming

Python Tutorial

Python Tutorial