C#泛型方法重载(附带实例)
C#中,泛型方法的重载可细分为两种情况,分别是一般类中的泛型方法重载和泛型类中的泛型方法重载。
【实例 1】在一般类 MyTest 内创建泛型方法。
在一般类中重载泛型方法,实例如下。
【实例 2】在一般类中创建泛型方法重载。
C#一般类中的泛型方法重载
C#允许一般类内含有泛型方法,在一般类内创建泛型方法,详情可以参考下列实例。【实例 1】在一般类 MyTest 内创建泛型方法。
MyTest obj = new MyTest(); obj.PrintInfo<int>(50); // 由<int>推断数据类型是int obj.PrintInfo(60); // 由参数60推断数据类型是int obj.PrintInfo<string>("Hello C#"); // 由<string>推断数据类型是string obj.PrintInfo("Going to C# World!"); // 由参数"Going to C# World!"推断数据类型是string public class MyTest { public void PrintInfo<T>(T data) { Console.WriteLine(data); } }执行结果为:
50
60
Hello C#
Going to C# World!
在一般类中重载泛型方法,实例如下。
【实例 2】在一般类中创建泛型方法重载。
MyTest obj = new MyTest(); obj.Data("Going to C# World"); obj.Data<string>("王者归来"); obj.Data(50); obj.Data<int>(100); // 使用Data<T> public class MyTest { public void Data<T>(T t) { Console.WriteLine($"使用Data<T>:{t.GetType().Name}:{t}"); } public void Data(int a) { Console.WriteLine($"使用Data:{a.GetType().Name}:{a}"); } }执行结果为:
使用Data<T>:String:Going to C# World
使用Data<T>:String:王者归来
使用Data:Int32:50
使用Data<T>:Int32:100
C#泛型类中的泛型方法重载
【实例 3】泛型类中的泛型方法重载。MyTest<int> xInt = new MyTest<int>(); xInt.Data(10); xInt.Data("10"); // 使用Data(string) MyTest<string> xString = new MyTest<string>(); xString.Data("Going to C#"); public class MyTest<T> { public void Data(T item) { Console.WriteLine($"使用Data T:{item}"); } public void Data(string item) { Console.WriteLine($"使用Data string:{item}"); } }执行结果为:
使用Data T:10
使用Data string:10
使用Data string:Going to C#