33 避免在泛型类型中声明静态成员

T指定不同的数据类型,MyList<T>也变成不同的数据类型,在不同数据之间不共享静态成员,但在相同数据类型中共享数据静态成员;

非泛型类型中的泛型方法并不会在运行时的本地代码中生产不同的类型。

    class Program
    {
        static void Main(string[] args)
        {
            Mylist list1 = new Mylist();
            Mylist list2 = new Mylist();
            Console.WriteLine(Mylist.Count);    //2

            Mylist<int> list3 = new Mylist<int>();
            Mylist<int> list4 = new Mylist<int>();
            Mylist<string> list5 = new Mylist<string>();
            Console.WriteLine(Mylist<int>.Count);   //2
            Console.WriteLine(Mylist<string>.Count);    //1

            Console.WriteLine(Mylist.Func<int>());  //0
            Console.WriteLine(Mylist.Func<int>());  //1
            Console.WriteLine(Mylist.Func<string>());   //2
        }
        class Mylist
        {
            static int count;
            public static int Count { get; set; }
            public Mylist()
            {
                Count++;
            }
            public static int Func<T>()
            {
                return count++;
            }
        }
        class Mylist<T>
        {
            public static int Count { get; set; }
            public Mylist()
            {
                Count++;
            }
        }
    }

 

posted @ 2016-01-20 15:36  小-黑  阅读(123)  评论(0)    收藏  举报