EDUCBA

EDUCBA

MENUMENU
  • Free Tutorials
  • Free Courses
  • Certification Courses
  • 600+ Courses All in One Bundle
  • Login

Generics in C#

By Priya PedamkarPriya Pedamkar

Home » Software Development » Software Development Tutorials » C# Tutorial » Generics in C#

Generics in C#

Introduction to Generics in C#

Generic in C# are important features that allow the user to write a class or maybe a function that can work with any data type with ease or we can say a generic class or function that is compatible with any other data type. All we have to do is define it with a place holder. In short, we have to write a set of methods or classes with arguments for the data type. Therefore, whenever a constructor comes across compiler it will generate the given code to handle the specified data type without confusion.

Syntax:

Start Your Free Software Development Course

Web development, programming languages, Software testing & others

Here is the syntax for declaring any generic class in C#:

public class GenericList < G > // Generic Class Declaration
{
public void Test1 ( G input ) { }
}
class DemoGenericList
{
private class ExampleClass { }
static void Main()
{ // Integer type list
GenericList < int > l1 = new GenericList < int > () ;
l1.Test1 ( 1 ) ;
// String type list
GenericList < string > l2 = new GenericList < string > () ;
l2.Test1 ( " " ) ;
// Declaring a list for ExampleClass type
GenericList < ExampleClass > l3 = new GenericList < ExampleClass > () ;
l3.Test1 ( new ExampleClass () ) ;
}
}

Explanation: You can see the code, everything is declared with proper explanation. First, we defined generic class and then a generic list with a private class and in the main method, we created one integer and one string type list named list1, list2.

Examples to Implement Generics in C#

Now we will how does it works in real-time through programming examples with a brief explanation.

Examples #1

Demonstrate the working of generics

Code:

using System ;
public class EDUCBA<P> {
private P data ;
public P value
{
get
{
return this.data ;
}
set
{
this.data = value ;
}
}
}
class Demo {
static void Main(string[] args)
{
EDUCBA<string> name = new EDUCBA<string>() ;
name.value = " EDUCBA Education " ;
EDUCBA<float> version = new EDUCBA<float>() ;
version.value = 1.0F ;
Console.WriteLine(name.value) ;
Console.WriteLine(version.value) ;
}
}

Popular Course in this category
C# Training Program (6 Courses, 17 Projects)6 Online Courses | 17 Hands-on Project | 89+ Hours | Verifiable Certificate of Completion | Lifetime Access
4.6 (8,847 ratings)
Course Price

View Course

Related Courses
ASP.NET Training (8 Courses, 19 Projects).NET Training Program (4 Courses, 19 Projects)

Output:

Generics in C# - 1

Explanation: As you can see in the above code we are defining the generic class with name EDUCBA and we are using < > to specify the type of parameter. After that, we are declaring the private members for data as well as value. To use the functionality, we are using the get method to return the data and value both.     After that, we will create a demo class with the name “ Demo ” in which we will create the instance of the string type for class EDUCBA where we will set the value and name.    For float type, the value is of the float data type. In the end, to display the output on the user screen we are calling console. writeline method.

Apart from the code to understand in detail how a generics work in C# is that we have defined a generic class named “ EDUCBA ” which is also using a generic parameter named “ P ”. After that, in the main method, we have created two instances of EDUCBA class with string and float data type which will store all the string as well as float values. This is how a generic work in C#.

Example #2

Demonstrate Generic methods:

Code:

using System ;
using System.Collections.Generic ;
namespace DemoGenericMethods {
class Code {
static void Exchange<E>( ref E lhs , ref E rhs ) {
E temporary ;
temporary = lhs ;
lhs = rhs ;
rhs = temporary ;
}
static void Main(string[] args) {
int x, y ;
char p, q ;
x = 26 ;
y = 47 ;
p = 'A' ;
q = 'R' ;
Console.WriteLine( " Below are the integer values before exchanging : " ) ;
Console.WriteLine( " x = {0}, y = {1}", x, y ) ;
Console.WriteLine( " Below are the character values before exchanging : " ) ;
Console.WriteLine( " p = {0}, q = {1} " , p , q ) ;
Exchange <int> ( ref x , ref y ) ;
Exchange <char> ( ref p, ref q ) ;
Console.WriteLine( " Below are the integer values after exchanging : " ) ;
Console.WriteLine( " x = {0} , y = {1} " , x , y ) ;
Console.WriteLine( " Below are the character values after exchanging : " ) ;
Console.WriteLine( " p = {0} , q = {1} " , p , q ) ;
Console.ReadKey();
}
}
}

Output:

Generics in C# - 2

Explanation: In the above code, we will be using the System.Collections.Generic so that we can use and implement the Generic methods in our code. We have declared a generic class with the name “ Code ” in which we are creating a list with name Exchange of void type containing 2 arguments LHS and RHS. We will be swapping the 2 values using a temporary variable. Now in the main method, we declared two integer variables x and y and two-character variables p and q. If you notice we have also assigned a value with each of them respectively. After that, for displaying the value before and after swapping we are using the console. writeline statement. Therefore, for calling the Exchange we are using the Exchange statement with reference type and variables assigned to them. In the end, on the output screen, you will see the character values of p and q as well as x and y before as well as after swapping.

Conclusion

In Conclusion, generics help coders a lot in improvising the code in numerous ways such as reusability, performance, and safety. As you can create your generic classes, interfaces, delegates, and methods. Also, these generic data type is far safer than any other types with awesome efficiency and performance.

Recommended Articles

This is a guide to Generics in C#. Here we discuss an introduction to Generic in C# with syntax and examples with brief explanation for better understanding. You can also go through our other related articles to learn more –

  1. C# Thread Join
  2. File Handling in C#
  3. C# Nullable
  4. Metadata in C#

All in One Software Development Bundle (600+ Courses, 50+ projects)

600+ Online Courses

50+ projects

3000+ Hours

Verifiable Certificates

Lifetime Access

Learn More

0 Shares
Share
Tweet
Share
Primary Sidebar
C sharp Tutorial
  • Advanced
    • Inheritance in C#
    • Exception Handling in C#
    • Types of Exception in C#
    • C# FileNotFoundException
    • C# NullReferenceException
    • C# OutOfMemoryException
    • C# StackOverflowException
    • Custom Exception in C#
    • What is Multithreading in C#
    • C# finally
    • C# System.IO
    • What is StringBuilder in C#
    • DataReader C#
    • BinaryWriter in C#
    • C# BinaryReader
    • TextWriter in C#
    • TextReader in C#
    • C# StringReader
    • C# StringWriter
    • C# StreamReader
    • C# StreamWriter
    • C# FileInfo
    • What is Design Pattern in C#?
    • Multithreading in C#
    • Sorting in C#
    • Bubble Sort in C#
    • C# SortedList
    • C# SortedSet
    • C# SortedDictionary
    • Abstract Class in C#
    • Access Modifiers in C#
    • C# Generics
    • Deserialization in C#
    • C# Thread
    • C# Thread Join
    • C# Thread Sleep
    • C# Thread Synchronization
    • C# Class
    • Sealed in C#
    • Sealed Class in C#
    • Polymorphism in C#
    • C# Call By Reference
    • Virtual Keyword in C# 
    • Yield Keyword in C#
    • Regular Expression in C#
    • C# Lambda Expression
    • C# Predicate
    • Convert Object to JSON C#
    • Checkbox in C#
    • C# MessageBox
    • Collections in C#
    • List in C#
    • C# LinkedList
    • Listbox in C#
    • Protected in C#
    • C# EventHandler
    • Private in C#
    • this Keyword in C#
    • Static Keyword in C#
    • C# Out Parameter
    • Assert in C#
    • C# Delegates
    • C# Interface
    • Generics in C#
    • Timer in C#
    • C# Serialization
    • Metadata in C#
    • C# Stack
    • C# Using Static
    • Queue in C#
    • C# File.Exists
    • C# Tuples
    • C# Create JSON Object
    • Partial in C#
    • C# readonly
    • C# Action Delegate
    • C# Await Async
    • C# Dictionary
    • IEnumerable C#
    • C# Data Grid View
    • C# Dynamic
    • Web Services in C#
    • C# Pattern Matching
    • C# Extension Methods
    • C# XmlSerializer
  • Basic
    • Uses Of C#
    • C# Versions
    • C# Data Types
    • Variables in C#
    • Namespaces in C#
    • C# Compilers
    • C# Keywords
    • Iterators in C#
    • Objects in C#
    • C# Object Dispose
    • C# object to XML
    • C# check object type
    • C# Object Serialization
    • Pointers in C#
    • C# Literals
    • C# Commands
    • C# Custom Attribute
    • Type Casting in C#
    • String vs String C#
    • C# Struct vs Class
  • Operators
    • Logical Operators in C#
    • Conditional Operators in C#
    • Bitwise Operators in C#
    • C# OR Operator
    • C# Ternary Operators
    • Operator Precedence in C#
  • Control Statement
    • C# if Statement
    • Else If in C#
    • Continue in C#
    • Break in C#
    • Switch Statement in C#
    • Goto Statement in C#
  • Loops
    • C# For Loop
    • C# While Loop
    • C# do-while loop
    • C# foreach Loop
  • Arrays
    • Arrays in C#
    • 2D Arrays in C#
    • C# Jagged Arrays
    • String Array in C#
    • C# Multidimensional Arrays
  • Constructor and Destructor
    • Constructor in C#
    • Copy Constructor in C#
    • Static Constructor in C#
    • Destructor in C#
  • overloading and overrideing
    • Overloading and Overriding in C#
    • Overloading in C#
    • Overriding in C#
    • Method Overloading in C#
    • Method Overriding in C#
    • Operator Overloading in C#
  • Functions
    • C# Functions
    • C# String Functions
    • Math Functions in C#
    • Recursive Function in C#
    • C# Anonymous Functions
    • C# Local Functions
    • Enum in C#
    • Trim() in C#
    • clone() in C#
    • C# random
    • C# String Format()
    • C# String Interpolation
    • C# StartsWith()
    • C# String IndexOf()
    • DateTime in C#
    • C# Nullable
    • C# nameof
    • C# checked
    • C# String PadLeft
    • Convert String to Double in C#
    • Convert int to String C#
    • String to Date C#
    • C# intern()
    • C# Stopwatch
    • C# DirectoryInfo
    • C# Compare()
    • C# Base
    • C# SOAP
    • Lock in C#
  • Programs
    • Patterns in C#
    • Swapping in C#
    • Palindrome in C#
    • Factorial in C#
    • Fibonacci Series in C#
    • Random Number Generator in C#
    • Prime Numbers in C#
    • Armstrong Number in C#
    • Reverse String in C#
  • Interview questions
    • C# Interview Questions and Answers
    • C# OOP Interview Questions
    • C# Design Pattern Interview Questions

Related Courses

C# Certification Training

ASP.NET Course

.NET Course

Footer
About Us
  • Blog
  • Who is EDUCBA?
  • Sign Up
  • Corporate Training
  • Certificate from Top Institutions
  • Contact Us
  • Verifiable Certificate
  • Reviews
  • Terms and Conditions
  • Privacy Policy
  •  
Apps
  • iPhone & iPad
  • Android
Resources
  • Free Courses
  • Java Tutorials
  • Python Tutorials
  • All Tutorials
Certification Courses
  • All Courses
  • Software Development Course - All in One Bundle
  • Become a Python Developer
  • Java Course
  • Become a Selenium Automation Tester
  • Become an IoT Developer
  • ASP.NET Course
  • VB.NET Course
  • PHP Course

© 2020 - EDUCBA. ALL RIGHTS RESERVED. THE CERTIFICATION NAMES ARE THE TRADEMARKS OF THEIR RESPECTIVE OWNERS.

EDUCBA Login

Forgot Password?

EDUCBA
Free Software Development Course

Web development, programming languages, Software testing & others

*Please provide your correct email id. Login details for this Free course will be emailed to you
Book Your One Instructor : One Learner Free Class

Let’s Get Started

This website or its third-party tools use cookies, which are necessary to its functioning and required to achieve the purposes illustrated in the cookie policy. By closing this banner, scrolling this page, clicking a link or continuing to browse otherwise, you agree to our Privacy Policy

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA
Free Software Development Course

Web development, programming languages, Software testing & others

*Please provide your correct email id. Login details for this Free course will be emailed to you

Special Offer - C# Certification Training Learn More