//定义一个泛型类,类名后加上表示这是一个泛型类,T是一个类型参数 public class MyGenericClass { //定义一个泛型方法,方法名后加上表示这是一个泛型方法,T是一个类型参数 public void MyGenericMethod() { //在方法中使用T代替数据类型 T myVariable; //... } }

//使用泛型类和泛型方法,用具体类型代替T MyGenericClass myIntClass = new MyGenericClass(); myIntClass.MyGenericMethod(); //编译错误,不能用string代替int

MyGenericClass myStringClass = new MyGenericClass(); myStringClass.MyGenericMethod(); //编译错误,不能用int代替string

//泛型约束示例,使用where关键字指定约束条件 public class MyGenericClass where T : class, new() { //T必须是引用类型,并且有无参构造函数 T myVariable = new T(); //... }

public interface IMyInterface { //... }

public class MyGenericClass where T : IMyInterface { //T必须实现IMyInterface接口 //... }

public class MyGenericClass<T, U> where T : U { //T必须是U的子类或实现U接口 //... }

C# frameword 泛型引入 场景:相似的逻辑只是传入参数类型或返回的类型不同 List Dictionary Actionobjecteventargs 方式:object但会有类型转换对于值类型会有性能损耗泛型:定义时使用类型占位符T也可以用其他字母-----类型参数 泛型思想:延迟类或方法中的数据类型的指定直到程

原文地址: https://www.cveoy.top/t/topic/bo40 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录