河北pc端网站建设,wordpress centos查看目录,wordpress 栏目投稿,长沙企业建站招聘信息前言上一篇博文简单介绍了泛型的约束#xff0c;说是通过where来实现具体委托占位符的约束。那么约束又有什么类型和次序呢。这篇文章咱们一起看看。目前共5种类型的约束。类名#xff1a;只有这个类型的类或从它继承的类才能用作类型实参class#xff1a;任何引用类… 前言上一篇博文简单介绍了泛型的约束说是通过where来实现具体委托占位符的约束。那么约束又有什么类型和次序呢。这篇文章咱们一起看看。目前共5种类型的约束。类名只有这个类型的类或从它继承的类才能用作类型实参class任何引用类型包含类数组委托接口都可以用作类型实参struct任何值类型都可以做类型实参接口名只有这个接口或实现接口的类型才能用作类型实参new(): 任何带有无参公共构造函数的类型都可以用作类型实参在实现过程中最多只能有一个主约束且必须放在第一位可以有多个接口名约束如果存在构造函数约束则必须放在最后。泛型约束的具体用法泛型其实定义声明好后和类型一样。有泛型方法、泛型委托和泛型接口。具体用法如下所示泛型方法class Ahui2 {public void GetReverseAndPrintByAgeT(T[] age) {Array.Reverse(age);foreach (var item in age){Console.WriteLine({0}item.ToString());}Console.WriteLine();}}泛型委托delegate void MyNameDelegateT(T value);class Ahui3 {static public void PrintString(String tempName) {Console.WriteLine(tempName);}static public void PrintUpperString(String tempName){Console.WriteLine(tempName.ToUpper()); }}static void Main(string[] args){var myDel new MyNameDelegateString(Ahui3.PrintString);myDel Ahui3.PrintUpperString;myDel(Andyahui);Console.ReadKey();}泛型接口interface IBaseActionT {T isLove(T name);}class AhuiS : IBaseActionS {public S isLove(S name){return name;}}var ahuinew Ahuistring();var ahui2 new Ahuiint();Console.WriteLine(ahui.isLove(阿辉));Console.WriteLine( ahui2.isLove(27));泛型接口让我们编写参数和接口成员返回类型是泛型类型实参的接口。泛型接口的声明和非泛型接口的声明差不多但是需要在接口名称之后的尖括号中放置类型参数。需要注意两点实现不同类型参数的泛型接口是不同的接口可在非泛型类型中实现泛型接口其中实现泛型类型接口时必须保证类型实参组合不会在类型中产生两个重复的接口。明天咱们将一起学习在泛型类型创建过程中的一个主题叫做可变性。分为协变、逆变、不变。寄语人生短暂我不想去追求自己看不见的我只想抓住我能看得见的。原创不易给个关注。我是阿辉感谢您的阅读如果对你有帮助麻烦点赞、再看、分享 谢谢。往期推荐C#中泛型的用法C#中的泛型C#中接口的用法C#中的接口