Showing posts with label C# Generics Example. Show all posts
Showing posts with label C# Generics Example. Show all posts

Thursday, October 9, 2025

🧠 What is Generics in C#? Complete Guide with Examples

 📘 Introduction

In C#, Generics are one of the most powerful features introduced with the .NET Framework 2.0.
They allow you to define classes, methods, interfaces, and collections that can work with any data type — while still maintaining type safety and performance.

In simple words, Generics help you write code once and use it with any data type.


⚙️ What Are Generics?

Generics let you define a placeholder type (called a type parameter) that will be replaced with a specific type when you create an instance of a class or call a method.

This means you can write:

List<int> List<string> List<Employee>

—all using the same generic List<T> class.


💡 Example Without Generics

public class Calculator { public int Add(int a, int b) { return a + b; } }

If you want to add float or double values, you’ll have to write multiple methods for each data type.
This leads to code duplication and poor reusability.


⚙️ Example With Generics

public class Calculator<T> { public T Add(T a, T b) { dynamic x = a; dynamic y = b; return x + y; } } class Program { static void Main() { Calculator<int> intCalc = new Calculator<int>(); Console.WriteLine("Sum (int): " + intCalc.Add(10, 20)); Calculator<double> doubleCalc = new Calculator<double>(); Console.WriteLine("Sum (double): " + doubleCalc.Add(10.5, 20.7)); } }

Output

Sum (int): 30 Sum (double): 31.2

Here, T is a type parameter. It allows the Calculator class to operate with any data type (int, double, string, etc.).


🧱 Generic Method Example

You can also create generic methods inside normal classes.

public class DisplayData { public void ShowData<T>(T data) { Console.WriteLine("Value: " + data); } } class Program { static void Main() { DisplayData obj = new DisplayData(); obj.ShowData<int>(101); obj.ShowData<string>("Hello Generics"); } }

Output

Value: 101 Value: Hello Generics

Here, the method ShowData<T>() can accept any data type without overloading.


📚 Generic Collections in C#

C# provides several built-in generic collections inside the System.Collections.Generic namespace.
These are type-safe and more efficient than old non-generic collections like ArrayList or Hashtable.

Generic CollectionDescription
List<T>Dynamic array of type T
Dictionary<TKey, TValue>Key-value pair collection
Queue<T>FIFO (First-In-First-Out) collection
Stack<T>LIFO (Last-In-First-Out) collection

Example:

List<string> names = new List<string>(); names.Add("Hasitha"); names.Add("Cherry"); foreach (var name in names) { Console.WriteLine(name); }

Output

Hasitha Cherry

🧩 Benefits of Generics in C#

BenefitDescription
Type SafetyPrevents type mismatches at compile time
PerformanceAvoids boxing/unboxing for value types
ReusabilityWrite code once, use with any type
MaintainabilityCleaner and less repetitive code

🔄 Generic Constraints (Optional but Powerful)

Sometimes, you might want to restrict which data types can be used with your generic class.

Example:

public class DataManager<T> where T : class { public void Display(T data) { Console.WriteLine("Data: " + data); } }

Here, where T : class means only reference types can be used.


🚀 Conclusion

Generics in C# make your code reusable, efficient, and type-safe.
They help developers build scalable and maintainable applications, especially in large projects using .NET Core or ASP.NET.

Blog Archive

Don't Copy

Protected by Copyscape Online Plagiarism Checker

Pages