using
System;
using
System.Collections.Generic;
namespace
GenericsDemo
{
class Program
{
static void Main(string[]
args)
{
//Equal
method for numbers only
EqualNumber
objEqualNumber = new EqualNumber();
Console.WriteLine("Number Equals: " +
objEqualNumber.IsEqual(5, 6));
//Equal
method for string only
EqualString
objEqualString = new EqualString();
Console.WriteLine("String Equals: " +
objEqualString.IsEqual("Hello", "Hello"));
//Equal
method for both number and string using object parameter
//This
method use boxing and unboxing
EqualObject
objEqualObject = new EqualObject();
Console.WriteLine("Number Equals: " +
objEqualObject.IsEqual(10, 10));
Console.WriteLine("String Equals: " +
objEqualObject.IsEqual("Hello","Hello"));
//This
code will compile and execute successfully it is not type safety
Console.WriteLine("String Equals: " +
objEqualObject.IsEqual("Hello",
10));
//This
use Generics methods to compare equallity using strong type safety
//This
method dose not use boxing and unboxing
EqualGenerics
objEqualGenerics = new EqualGenerics();
Console.WriteLine("Number Equals: " +
objEqualGenerics.IsEqual<int>(10, 10));
Console.WriteLine("String Equals: " +
objEqualGenerics.IsEqual<string>("Hello","Hello"));
Console.ReadLine();
}
}
//objects
public class EqualObject
{
public bool IsEqual(object
value1, object value2)
{
return
value1.Equals(value2);
}
}
//number
public class EqualNumber
{
public bool IsEqual(int
value1, int value2)
{
return
value1.Equals(value2);
}
}
//string
public class EqualString
{
public bool IsEqual(string
value1, string value2)
{
return
value1.Equals(value2);
}
}
//Generics
public class EqualGenerics
{
public bool IsEqual<T>(T value1, T value2)
{
return
value1.Equals(value2);
}
}
}
Advantage of Generics
Use generic types to maximize code reuse, type safety, and performance.
The most common use of generics is to create collection classes.
The .NET Framework class library contains several new generic collection classes in the System.Collections.Generic namespace.
These should be used whenever possible in place of classes such as ArrayList in the System.Collections namespace.
You can create your own generic interfaces, classes, methods, events and delegates.
Generic classes may be constrained to enable access to methods on particular data types.Information on the types used in a generic data type may be obtained at run-time by means of reflection.

Join the conversation! Your thoughts help the community grow.