Introduction

I would like to introduce generic method overloading.

It would be good for you to already understand generics in C# but if not then please visit the following link.

Basics of Generic Classes in C#

First we will understand simple overloading then move towards generic overloading.

Steps and code

Add the following class to the project:

  1. public class SimpleClass
  2. {
  3. public void GetData(int x)
  4. {
  5. Console.WriteLine("INSIDE GetData and Datetype:" + x.GetType().Name);
  6. }
  7. public void GetData(string xStr)
  8. {
  9. Console.WriteLine("INSIDE GetData and Datetype:" + xStr.GetType().Name);
  10. }
  11. }

Program.cs

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. SimpleClass o = new SimpleClass();
  6. o.GetData(345);
  7. o.GetData("Devesh is testing the code");
  8. Console.ReadKey();
  9. }
  10. }

Running the Code

The following will be the output:

output

Understanding the code


We have created the GetData function with overloaded functions having integer and string parameters.

When we passed an integer to the method first GetData (int x ) is called else if we passed a string then GetData(string xStr) is called.

Understanding the code

Now we have a basic knowledge of method overloading.

Let us move towards Generic Method Overloading.

Now we are updating the GetData() method as a generic method.

  1. public void GetData<T>(T obj)
  2. {
  3. Console.WriteLine("INSIDE GetData<T>,"+ obj.GetType().Name);
  4. }

The following would be the complete code:

  1. public class SimpleDemoClass
  2. {
  3. public void GetData<T>(T obj)
  4. {
  5. Console.WriteLine("INSIDE GetData<T>,"+ obj.GetType().Name);
  6. }
  7. public void GetData(int x)
  8. {
  9. Console.WriteLine("INSIDE GetData" + x.GetType().Name);
  10. }
  11. public void GetxNextData<T>(T obj)
  12. {
  13. GetData(obj);
  14. }
  15. }

Program.cs

  1. class Program
  2. {
  3. Static void Main(string[] args)
  4. {
  5. SimpleDemoClass sobj = new SimpleDemoClass();
  6. sobj.GetData("data is for testing by-Devesh");
  7. sobj.GetData(95);
  8. sobj.GetxNextData(1234);
  9. Console.ReadKey();
  10. }
  11. }

Running code

Running code

Understanding the code.

Under standing the code

Conclusion

Here we learned the basics of generic method overloading.