Understanding Data Types in C#: A Comprehensive Guide

Category > CSHARP || Published on : Friday, March 3, 2023 || Views: 196 || C# data types value types reference types programming basics.


This article provides a detailed overview of the various data types in C# and their usage. It covers both value types and reference types, with examples of how to declare and use each type. By the end of this article, readers should have a thorough understanding of C# data types and how to leverage them in their code.

Data Types in C# are used to define variables or fields in a program. They specify the type of data that can be stored in a particular variable or field. C# has several built-in data types, each with its own characteristics and uses. Understanding data types is a fundamental part of learning any programming language. In this article, we will cover the most commonly used data types in C# and provide example C# code to demonstrate their usage.

C# Data Types:

C# has two categories of data types: value types and reference types.

Value Types:

Value types are types that store their value directly in memory. These types are allocated on the stack, and when they are passed as parameters, they are passed by value. This means that a copy of the value is made, and any changes made to the copy do not affect the original value.

bool: Represents a Boolean (true/false) value.

bool b = true;

byte: Represents an unsigned 8-bit integer value.

byte b = 255;

sbyte: Represents a signed 8-bit integer value.

sbyte sb = -128;

char: Represents a single Unicode character.

char c = 'a';

short: Represents a signed 16-bit integer value.

short s = -32768;

ushort: Represents an unsigned 16-bit integer value.

ushort us = 65535;

int: Represents a signed 32-bit integer value.

int i = -2147483648;

uint: Represents an unsigned 32-bit integer value.

uint ui = 4294967295;

long: Represents a signed 64-bit integer value.

long l = -9223372036854775808;

ulong: Represents an unsigned 64-bit integer value.

ulong ul = 18446744073709551615;

float: Represents a single-precision floating-point number.

float f = 3.14f;

double: Represents a double-precision floating-point number.

double d = 3.14159265359;

decimal: Represents a decimal number with 28 significant digits.

decimal dec = 12345678901234567890123456.789m;

Reference Types:

Reference types are types that store a reference to an object in memory. These types are allocated on the heap, and when they are passed as parameters, they are passed by reference. This means that any changes made to the object are reflected in all references to the object.

object: Represents any object type.

object o = new object();

string: Represents a sequence of Unicode characters.

string s = "Hello, World!";

dynamic: Represents a type whose operations are determined at runtime.

dynamic d = "Hello, World!";

class: Represents a user-defined type.

class MyClass
{
    public int MyField;
}
MyClass mc = new MyClass();
mc.MyField = 42;

interface: Represents a contract that can be implemented by a class.

interface IMyInterface
{
    void MyMethod();
}
class MyClass : IMyInterface
{
    public void MyMethod()
    {
        Console.WriteLine("MyMethod");
    }
}

delegate: Represents a type that can encapsulate a method with a specific signature.

delegate int MyDelegate(int x, int y);
MyDelegate md = delegate