该问题特别关注.Net。在其派生类中共享的基类中的静态成员
假设基类A有2个派生类B和C.此外,假设基类A有一个名为's'的静态变量。这个静态变量值是在'B'和'C'之间共享的,还是每个都获得它自己的静态变量副本。
我目前的知识说通常静态变量是在派生类之间共享的,除非基类是Generic。如果基类是通用的,那么将为类型参数的每个唯一组合创建该类的唯一副本,并且该类的每个副本以及该特定副本的派生类都与基类共享同一个satatic变量。
我实际上面临着一个非常独特的情况。就我而言,A,B和C都是非通用的。而且A有一个静态成员。但是这个成员的值对于B和C是不同的,在我的理解中应该不是这样的(除非我上面的静态变量声明不正确)。
编辑:
那么我的应用程序是一个ASP.NET应用程序。我正在继续调试,但根据我目前的评估,它发生的是这样的:
- 我把一个断点放在第一次命中断点时变量和它的值被更新。
- 下一次命中断点时,变量已恢复为其旧值并再次初始化。这是一个私有变量,只在一个地方更改。
我的猜测可能是应用程序的应用程序域已经回收或以某种方式,否则该类从内存中卸载。我仍在调查,但谢谢大家的回复。
如果您可以构建一个简短但完整的代码示例,那么我们可以计算出正在发生的事情,或者尝试这样做,您可能会发现问题的原因。 – 2011-04-18 10:20:23
我唯一的猜测是如果静态是用ThreadStaticAttribute装饰的,而且你正在从不同的线程观察它。 – 2011-04-18 10:22:44
您对泛型类的评论意味着混淆。具体的泛型类不是从假定的开放泛型“基类”中“派生出来的”。 – AakashM 2011-04-18 10:37:25