我有class X
大字段成员y
(就内存而言)被声明为静态成员,我注意到每次实例化X
的对象时,此字段可以在内存中加载或重新加载。 y
的基础结构是dictionary<string,int>
,它可以容纳5000 kvs。有没有办法将y
声明为单独的显式字典,并在应用程序生命周期内保持活动状态?
请注意:X的对象可以在运行时处理,因此更准确的问题是:如果将字典声明为类的静态成员,那么静态成员是否会在类中保留在内存中对象被垃圾收集或明确销毁?
答案 0 :(得分:6)
您正在类的实例构造函数中重新实例化静态字段,这会导致重新加载/重新实现字典变量。在类
中声明静态字段的位置初始化静态字段static Dictionary<string, int> y = new Dictionary<string, int>() {kvs};
OR
在静态构造函数中
static Dictionary<string, int> y;
static myClass()
{
y = new Dictionary<string, int>() {kvs};
}
类或静态字段初始值设定项的静态构造函数在其生命周期中仅运行一次。