泛型概述
泛型(Generic) 允许您延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候。换句话说,泛型允许您编写一个可以与任何数据类型一起工作的类或方法。再说白点就是我的类里的一些类型是可以动态的,可以根据调用者的需要来。
这样有一个什么好处呢,就是提高了我的代码的复用性。
您可以通过数据类型的替代参数编写类或方法的规范。当编译器遇到类的构造函数或方法的函数调用时,它会生成代码来处理指定的数据类型。
现在给大家写一个小的例子
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace test { class Program { static void Main(string[] args) { int obj = 2; Test<int> test = new Test<int>(obj);//这个地方 实例化调用我的构造方法 同事Test<int>这个int传到我的Test类当中的T //说白了现在我的T就是int类型了 这样其他的地方需要类型的地方就可以直接使用这个T //也就是咱们上面说的您可以通过数据类型的替代参数编写类或方法的规范。 //当编译器遇到类的构造函数或方法的函数调用时,它会生成代码来处理指定的数据类型。 Console.WriteLine("int:" + test.obj); //这个地方输入一下我的Test类当中一个变量的值 string obj2 = "hello world"; Test<string> test1 = new Test<string>(obj2); Console.WriteLine("String:" + test1.obj); Console.Read(); } } class Test<T> { public T obj; //这个 obj的值 就是我调用者需要的类型 //可以不写死 我的调用者在实例化类时传的什么类型这个地方T就是什么类型 public Test(T obj) { this.obj = obj; //给变量赋值 } } }
看一下输出结果:
同时我也可以有一个泛型的方法
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace test { class Program { static void Main(string[] args) { int obj = 2; Console.WriteLine("int:" + Test<int>(obj)); string obj2 = "hello world"; Console.WriteLine("int:" + Test<string>(obj2)); Console.Read(); } public static T Test<T>(T Obj) { return Obj; } } }
输出结果
泛型(Generic)的特性
使用泛型是一种增强程序功能的技术,具体表现在以下几个方面:
- 它有助于您最大限度地重用代码、保护类型的安全以及提高性能。
- 您可以创建泛型集合类。.NET 框架类库在 System.Collections.Generic 命名空间中包含了一些新的泛型集合类。您可以使用这些泛型集合类来替代 System.Collections 中的集合类。
- 您可以创建自己的泛型接口、泛型类、泛型方法、泛型事件和泛型委托。
- 您可以对泛型类进行约束以访问特定数据类型的方法。
- 关于泛型数据类型中使用的类型的信息可在运行时通过使用反射获取。
刚写没多久哪里写的不好的多包涵。
时间: 2024-10-10 12:47:33