泛型: 广泛的类型 一般用于传递类型的
泛型的命名规范:以T开头的单词命名,
<> 中间类型就是传入泛型
<int> 整形的泛型
<T> 泛型类型
List<string> list = new List<string>();
Dictionary<int, int> dic = new Dictionary<int, int>();
Dictionary<string, string> dic1 = new Dictionary<string, string>();
泛型使用在方法定义上,
调用泛型方法 通过<>将类型的实参进行传递,
对应的位置泛型形参就是这个类型
Test<int>(1);// T 传递的是int类型 此次参数必须是int类型Test<string>("a");// T传递的string 此次参数必须是字符串类型// Test(1); 泛型方法调用时候简化写法 系统自动推断类型// Test("a");
2 调用带两个泛型参数的方法 Test1 传递的类型是一个
Test1<int>(10, new int[] { 10 });
3 调用Test2方法 传入两个泛型类型 参数个数是2个
Test2<int, string>(10, "a");
Test2<int, int>(10, 10);
重点: 泛型方法调用的时候 由传入的类型坚定着实参的类型,实参类型决定着形参的类型,所以形参作用就进而体现了,参数类型不固定 由方法调用决定
例子 封装一个泛型方法 有返回值 泛型数组 ,参数传递一个任意类型的数据和数字 转化为对应长度的数组,并且数组里面存储的是传递的类型
Test4(10,20)整形数组 Test4("a",20)字符串数组
int[] aa = Test3<int>(10, 10);
string[] ab = Test3<string>("a", 10);
Console.WriteLine(string.Join(",",aa));
Console.WriteLine(string.Join(",", aa));
1 泛型方法 可以传入整形的数字,也可以传入字符串 也可以传入数组
// 定义方式: 方法名字后面添加<T> 方法参数类型改为T
public static void Test<T>(T a)
{Console.WriteLine(a);
}
2 定义带两个泛型参数的反省方法
// 泛型数组: 数组可以传递整形数组 也可以是字符串数组 T[] array
public static void Test1<T>(T a, T[] array)
{Console.WriteLine(a + ","+ array[0]);
}
3 定义泛型方法 传递两个泛型参数,两个参数类型不一样 可以使用 Ta 以后可以 T1... 以后可以 T1...T2...T3
public static void Test2<T,T1>(T a,T1 b){}
4 对应的调用
public static T[] Test3<T>(T a,int count)
{T[] r = new T[count];// 长度为第二个参数for (int i = 0; i < count; i++){r[i] = a;// 所有的元素都是a}return r;
}