C#中的隐形坑之泛型基类中的静态变量
切记:泛型基类中定义的静态变量,在各子类中是不会共享数据的。
一般在进程内共享数据可选择定义全局const变量或static变量。本文的主角就是static变量。例如我们要定义一个可以跨方法使用的事务时,会想到在基类中定义一个静态变量:
下面将通过一个测试例子来说明这点。先定义一个泛型基类,并声明一个静态变量。
protected BaseClass<T> where T:class,new()
{
static int Num=0;
}
public class A:BaseClass<D>
{
public A()
{
Console.Write(Num.ToString());
Num++;
}
}
解决办法是将静态变量的声明放到泛型基类外面,例如:
public class AA
{
public static int Num=0;
}