您当前的位置: 首页 >  c#

[C#]泛型的类型约束

发布时间:2021-04-22 14:13:48 ,浏览量:0

泛型的类型约束
//泛型类型约束// using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 泛型的类型约束 { class Program { static void Main( string [] args) { //int a = 3, b = 20; //Aah = new A(); //Console.WriteLine(ah.P(a, b)); //int a = 10; C c = new C (); B < C > bh = new B < C >(); bh.P(c); //Console.WriteLine(b); } } public interface IM { int Change(); string Compare(); } //public class Awhere T :IComparable //{ //    public  T P(T a, T b) //    { //        if (a.CompareTo(b)>0) //        { //            return a; //        } //        else //        { //            return b; //        } //    } //} public class C : IM { public int Change() { Console .WriteLine( "这是接口IM的Change方法" ); return 0; } public string Compare() { Console .WriteLine( "这是接口IM的Compare方法" ); return null ; } } public class B < T > where T : IM { public T P( T a) { if (a.Change() > 0) { return a; } return a; } } } //泛型五大类型约束 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 泛型的五大约束 { 泛型类的五大约束 // 1. where T:struct  限定当前参数类型必须是值类型 // 2. where T:class   限定当前类型参数类型必须是引用类型 // 3. where T:new() 限定当前参数类型必须有一个无参构造器 // 4. where T:限定当前参数类型 必须是当前类  或者当前类为基类的类 //父类名 // 5. where T:限定当前参数类型必须实现指定接口  class Program { static void Main( string [] args) { //Dd = new D(); //Base ba = new Base(); //Console.WriteLine("泛型类D的  funcd的方法  在此被调用"); //d.funcd(ba);//此处调用funcd的方法 //Cc = new C(); //c.f(); F f = new F (); E < F > e = new E < F >(); e.funce(f); } } public class Base { public void fb() { Console .WriteLine( "这是基类Base的方法fb" ); } } public class A < T > where T : struct { public void funca( T a) { } } public class B { } public class C < T > where T : new () { public void f() { Console .WriteLine( "这里是无参构造函数的方法" ); } } public class Cb { public Cb() { } } public class D < T > where T : Base { public void funcd( T a) { a.fb(); } } public interface INter { int funinter(); } public class F : INter { public int funinter() { Console .WriteLine( "这里是实现了继承接口内的方法" ); return 0; } } public class E < T > where T : INter // 第五种类型 { public T funce( T a) { a.funinter(); Console .WriteLine( "这里是E内的方法的实现" ); return a; } } } 
关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    108697博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.3749s