<>
,这里的尖括号用于将类或方法声明为泛型。下面通过一个简单的示例来帮助您理解这个概念:using System; using System.Collections; namespace task.lmcjl.com { // 定义泛型类 class GenericClass<T>{ // 泛型方法 public GenericClass(T msg){ Console.WriteLine(msg); } } class Demo { static void Main(string[] args){ GenericClass<string> str_gen = new GenericClass<string>("C语言中文网"); GenericClass<int> int_gen = new GenericClass<int>(1234567); GenericClass<char> char_gen = new GenericClass<char>('C'); Console.ReadKey(); } } }允许结果如下:
C语言中文网
1234567
C
using System; using System.Collections.Generic; namespace task.lmcjl.com { class Demo { static void Swap<T>(ref T lhs, ref T rhs) { T temp; temp = lhs; lhs = rhs; rhs = temp; } static void Main(string[] args) { int a, b; char c, d; a = 10; b = 20; c = 'I'; d = 'V'; // 在交换之前显示值 Console.WriteLine("调用 swap 之前的 Int 值:"); Console.WriteLine("a = {0}, b = {1}", a, b); Console.WriteLine("调用 swap 之前的字符值:"); Console.WriteLine("c = {0}, d = {1}", c, d); // 调用 swap Swap<int>(ref a, ref b); Swap<char>(ref c, ref d); // 在交换之后显示值 Console.WriteLine("调用 swap 之后的 Int 值:"); Console.WriteLine("a = {0}, b = {1}", a, b); Console.WriteLine("调用 swap 之后的字符值:"); Console.WriteLine("c = {0}, d = {1}", c, d); Console.ReadKey(); } } }运行结果如下:
调用 swap 之前的 Int 值:
a = 10, b = 20
调用 swap 之前的字符值:
c = I, d = V
调用 swap 之后的 Int 值:
a = 20, b = 10
调用 swap 之后的字符值:
c = V, d = I
delegate T NumberChanger<T>(T n);
【示例】下面通过示例演示泛型委托的使用:using System; using System.Collections.Generic; namespace task.lmcjl.com { class Demo { delegate T NumberChanger<T>(T n); static int num = 10; public static int AddNum(int p){ num += p; return num; } public static int MultNum(int q){ num *= q; return num; } public static int getNum(){ return num; } static void Main(string[] args){ // 创建委托实例 NumberChanger<int> nc1 = new NumberChanger<int>(AddNum); NumberChanger<int> nc2 = new NumberChanger<int>(MultNum); // 使用委托对象调用方法 nc1(25); Console.WriteLine("Num 的值为: {0}", getNum()); nc2(5); Console.WriteLine("Num 的值为: {0}", getNum()); Console.ReadKey(); } } }运行结果如下:
Num 的值为: 35
Num 的值为: 175
本文链接:http://task.lmcjl.com/news/18362.html