详解C#泛型(二)
2021-06-30 22:06
标签:接口 构造 not log 文章 except www. 具体类 eric 一、自定义泛型方法(Generic Method),将类型参数用作参数列表或返回值的类型: 1.声明泛型方法时,可以在参数列表中使用这个类型参数:void MyFunc 2.声明泛型方法时,可以在返回值类型中使用这个类型参数:T MyFunc 3.声明泛型方法时,方法的参数列表和返回值可以指定相同或不相同的类型参数,如果不相同则一般参数列表的类型参数在前,返回值的类型参数在后:U MyFunc 4.泛型方法中的类型参数也可以指定约束; 5.在泛型类中声明的方法,方法的参数列表和返回值可以使用泛型类的类型参数作为类型;泛型方法可出现在泛型或具体类型中,只有当方法有属于自己的类型参数时才是泛型方法,在泛型类中声明泛型方法时,二者类型参数的占位符不可以相同: 二、自定义泛型接口(Generic Interface),将类型参数用作参数列表或返回值的类型: 1.适用于泛型类的规则基本也适用于泛型接口; 三、自定义泛型委托(Generic Delegate),将类型参数用作参数列表或返回值的类型: 1.泛型委托同泛型类一样,需要在实例化时指定类型参数的类型; 2.泛型委托的实例同具体委托的实例一样,只需要方法的参数列表和返回值类型相同即可进行匹配,因此不管目标方法是指定了符合要求类型的泛型方法还是具体方法都可以进行匹配; 四、反射中的泛型: 1.通过反射只可以获取未指定任何类型参数的开放式构造类的类型信息和指定所有类型参数的封闭式构造类的类型信息,即无法获取MyClass 如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的认可是我写作的最大动力! 作者:Minotauros 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 详解C#泛型(二) 标签:接口 构造 not log 文章 except www. 具体类 eric 原文地址:https://www.cnblogs.com/minotauros/p/9965997.htmlvoid MyFunc
类型参数数量的不同,可以构成重载方法:void MyFunc() { }
void MyFunc
class MyClass
interface IMyInterface
delegate void MyDelegate
Type myType = typeof(MyClass); //获取未指定任何类型参数的开放式构造类的类型信息,多个类型参数时添加,:typeof(MyClass)
myType = myType.MakeGenericType(typeof(int)); //通过类型信息的实例方法MakeGenericType()构建指定所有类型参数的封闭式构造类的类型信息,如未指定所有类型参数会抛出异常ArgumentException
//也可以直接获取封闭式构造类的类型信息,当类型参数在一开始就确定时推荐使用此种方式
//myType = typeof(MyClass
出处:https://www.cnblogs.com/minotauros/