自定义泛型的结构(struct)

注意点:

首先,结构的声明要加入<T>,如 MyPoint<T>, 不然结构体里面用到T会混淆。

其次,default关键字的新用法:除了在Switch里面的用法;在泛型里面表示该类型的默认值。比如int的默认值为0;引用型的默认值为null。 span class="Title">

最后,泛型允许加入where关键字来限定传入的类型。主要包括

where T : struct  必须传入值类型

wehre T: class  必须传入引用类型

where T: new() 必须具有默认的构造函数(当你需要new一个T的实例出来的时候,它具有默认构造函数就很重要了)

where T:SomeClassName 必须从指定的类继承

where T:SomeInterface 必须实现指定的接口

where T:operation + 必须实现+运算

 

当需要多个限制的时候,使用','分隔即可。

实例:

public struct MyPoint<T>

    {

        private T a;

        private T b;



        public MyPoint(T xVal, T yVal)

        {

            a = xVal;

            b = yVal;

        }



        public override string ToString()

        {

            return string.Format("the x is {0},y is {1}", a.ToString(), b.ToString());

        }



        public void ResetMyPoint()

        {

            a = default(T);

            b = default(T);

        }

    }



    

    class Program

    {



       



        static void Main(string[] args)

        {



            MyPoint<int> mp = new MyPoint<int>(2, 4);

            Console.WriteLine(mp.ToString());

            mp.ResetMyPoint();

            Console.WriteLine(mp.ToString());



            MyPoint<double> mp2 = new MyPoint<double>(2.5, 3.5);

            Console.WriteLine(mp2.ToString());

            mp2.ResetMyPoint();

            Console.WriteLine(mp2.ToString());

        }

        



        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值