Updated April 3, 2023
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:
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) ;
}
}
Output:
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:
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 –