自定义泛型的结构(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());

        }

        



        
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭