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

Join the conversation! Your thoughts help the community grow.