Tutorials » DotNet tutorials »

DataTypes in C#

Datatypes in C# and .NET

DataTypes are the basic building block of any language. Microsoft has tried to standardise the datatypes in .NET framework by introducing a limited, fixed set of types that can be used to represent almost anything in programming world.

C++ was very rich in datatypes, but that leads to confusion too. Especially, when you write components that may be consumed by applications written in other platforms, you have to make sure the types used are compatible with other platforms too!

.NET types start from a clean slate. All .NET languages share the same types. So, they are all compatible and no worries.This means, you can call C# code from VB.NET and vice versa, without worrying about type conversions.

.NET data types are either structures or classes, part of the System namespace. For example, the following data types are implemented as struct in .NET:

  • Int16
  • Int32
  • Double

    (String is implemented as a class in .NET, for various reasons.)

    If you are not very familiar with struct and class, don't worry about it. You can just use them as if they are simple data types.

    Here is how you can declare variables of type Int, Double and String:

  • Int16 age, employeeNumber;
  • Double salary;
  • String name, address;

    You can use any of the .NET data types directly in any .NET language - in C#, VB.NET or xyz.NET.But in addition to the .NET types, each language provides a set of primitive types, which map to the corresponding types in .NET class library. This is why you may see some people use string and some others use String. There is no big difference. string is a primitive data type in C# and String is the corresponding class in .NET class library. The string in C# is mapped to the class in .NET class library. So, whether you use string or String,there is no real difference.

    DataTypes in C# and the corresponding class/struct in .NET class library

    The following list shows the list of data types available in C# and their corresponding class/struct in .NET class library.
    C# Data type Mapped to .NET class/struct
    sbyte System.SByte
    byte System.Byte
    char System.Char
    float System.Single
    decimal System.Decimal
    double System.Double
    ushort System.UInt16
    short System.Int16
    uint System.UInt32
    int System.Int32
    ulong System.UInt64
    long System.Int64
    bool System.Boolean
    string System.String
    object System.Object

    Value Types & Reference Types

    In C# data types are classified into two :
  • value types
  • reference types

    The following tables shows some of the differences between values types and reference types.
    value types reference types
    allocated on stack allocated on heap
    a value type variable contains the data itself reference type variable contains the address of memory location where data is actually stored.
    when you copy a value type variable to another one, the actual data is copied and each variable can be independently manipulated. when copying a reference type variable to another variable, only the memory address is copied. Both variables will still point to thesame memory location, which means, if you change one variable, the value will be changed for the other variable too.
    integer, float, boolean, double etc are value types. string and object are reference types.
    struct is value type. classes and interfaces are reference types.

  • Next Chapter: Classes and Object model in .NET
    Previous Chapter: C# Language Syntax
    More Chapters: .NET Tutorials
    More Tutorials: Tutorial Index

    Top Contributors
    TodayLast 7 Daysmore...

    Awards & Gifts

    Online Members

    Copyright © SpiderWorks Technologies Pvt Ltd., Kochi, India