C#泛型
泛型是一种非常强大的特性,它允许程序员编写灵活的代码,同时保持类型安全。泛型的核心思想是允许类或方法在定义时不指定具体的数据类型,而是在实际使用时指定。这意味着你可以创建一个可以与任何数据类型一起工作的类或方法
泛型类通过在类名后面添加尖括号(<T>)来定义,其中T是一个类型参数,代表将来可以被任何类型替换的占位符
泛型;广泛的类型一般用于传递类型的,
泛型的命名规范:以T开头的单词命名,
<>中间类型就是传入泛型 <string> 字符串泛型
<int> 整形的泛型
<T>泛型类型
列子:
//泛型使用在方法定义上.
//调用泛型方法 通过<>将类型的实参进行传递,对应位置泛型形参就是这个类型
Test<int>(1);//T 传递的是int 此次参数必须是int类型
Test<string>("中国");//T 传递的是int 此次参数必须是string类型
Test<bool>(true);//T 传递的是int 此次参数必须是bool类型
//2调用带两个泛型参数方法Test1 传递的类型是一个
Test1<int>(10, new int[] { 100});
//3调用Test2方法 传递泛型了许 参数个数是2个
Test2<int, string>(100, "中国");
Test2<int, int>(100, 1000);
Test2("中国","中国"); 泛型方法调用时候简化方法 系统自动推断类型
重点:泛型方法调用的时候 由传入的类型决定着实参的类型 实参类型决定着形参的类型 所以泛型作用就进而体现了 参数类型不固定
由方法调用来决定着
//4 封装一个有返回值泛型数组 前面是内容 后面是几次;’
int[] aa= Test3<int>(6, 8);
string[] ab= Test3<string>("中国", 10);
Console.WriteLine(string.Join(",",aa));
Console.WriteLine(string.Join(",", ab));
泛型方法 可以传入整型的数字 也可以传入字符串 也可以数组 传入一个泛型就行
定义方式 方法名字添加<T>方法参数类型改为T泛型的优势
public static void Test<T>(T a)
{
Console.WriteLine(a);
}
//2定义带两个泛型参数的方法
//泛型数组: 数组可以传递整型数组 也可以字符串数组:T[] b
public static void Test1<T>(T a ,T[] b)
{
Console.WriteLine(a + "" + b[0]);
}
//3定义泛型方法 传递两个泛型参数 两个参数类型不一样 可以使用T a 一会可以T1 T2 T3
public static void Test2<T,T1>(T a,T1 b)
{
Console.WriteLine(a+""+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;
}
运行结果:
泛型的使用带来了多个好处:
-
代码重用:你可以编写一次代码,然后用不同的数据类型重用它,而不需要重写代码。
-
类型安全:泛型提供了编译时类型检查,这意味着你可以在编译时捕获类型错误,而不是在运行时。
-
性能提升:泛型减少了需要进行类型转换的地方,这可以提高代码的性能。
泛型的使用场景
泛型在C#中的应用非常广泛,例如:
-
泛型集合:.NET框架提供了许多泛型集合类,如List<T>、Dictionary<TKey, TValue>等。
-
泛型接口:你可以创建泛型接口,如IComparable<T>。
-
泛型委托:泛型也可以用于委托,例如Func<T, TResult>和Action<T>。
泛型约束
泛型约束允许你指定类型参数必须满足的条件。例如,你可以要求类型参数必须实现某个接口或继承自某个类。这提供了更多的控制,确保泛型类或方法可以安全地使用类型参数。
结论
泛型是C#中一个非常强大的特性,它提供了代码重用、类型安全和性能优化的好处。通过使用泛型,你可以编写出更加灵活和强大的代码,同时减少错误和提高效率。
原文地址:https://blog.csdn.net/gtl20071123/article/details/144355856
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!