网上看的,定义一个泛型类,用表态变量来objCount计算该类某类型生成了多少个实例,如MyList<int>生成了两个实例。但追踪程序private static int objCount 始终为0, 不解。。请各位指点
   代码如下:using System;
using System.Collections.Generic;
using System.Text;namespace ConsoleApplication3
{    public class MyList<T>
    {
        private static int objCount = 0;
        public void Mylist()
        { objCount++; }
        public int Count
        {
            get
            {
                return objCount;
            }
        }
    }
    public class SampleCalss { }
    class Program
    {
        static void Main(string[] args)
        {
            MyList<int> Myintlist1 = new MyList<int>();
            MyList<int> Myintlist2 = new MyList<int>();
            MyList<double> dblist = new MyList<double>();
            MyList<SampleCalss> samplelist = new MyList<SampleCalss>();            Console.WriteLine(Myintlist1.Count);
            Console.WriteLine(Myintlist2.Count);
            Console.WriteLine(dblist.Count);
            Console.WriteLine(samplelist.Count);
            Console.ReadLine();
        }
    }
}

解决方案 »

  1.   

    public void Mylist()
            { objCount++; }
    这里不是构造函数,不会执行++操作。
    public Mylist()//这样才行
            { objCount++; }
      

  2.   

    构造函数虽然没有返回值 但是一样不可以加void的
      

  3.   

    try:    public class MyList<T>
        {
            private static int objCount = 0;
            public int Count
            {
                get
                {
                    return ++objCount;
                }
            }
        }
      

  4.   

    汗。。我自作多情加了个void,原来在这。。谢谢大家。
      

  5.   

    1. 构造函数有问题:
    public MyList() { //拼写,void
                objCount++;
            }2. C#2.0中由于引进了泛型,导致静态成员变量的机制出现了一些变化:静态成员变量在相同封闭类间共享,不同的封闭类间不共享。  这也非常容易理解,因为不同的封闭类虽然有相同的类名称,但由于分别传入了不同的数据类型,他们是完全不同的类,比如: 
    Stack<int> a = new Stack<int>();
    Stack<int> b = new Stack<int>();
    Stack<long> c = new Stack<long>();  类实例a和b是同一类型,他们之间共享静态成员变量,但类实例c却是和a、b完全不同的类型,所以不能和a、b共享静态成员变量。