网上看的,定义一个泛型类,用表态变量来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();
}
}
}
代码如下: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();
}
}
}
{ objCount++; }
这里不是构造函数,不会执行++操作。
public Mylist()//这样才行
{ objCount++; }
{
private static int objCount = 0;
public int Count
{
get
{
return ++objCount;
}
}
}
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共享静态成员变量。