在我的类中,我有一个字符串对象的静态字典,其中包含大量项目(它从文件中读取并初始化它们)我写了一个静态构造函数来这样做,它需要几秒钟,但我想这样做一次更快,因为我是在 ASP.Net 中做的,我希望我的网站没有这个开销,我该怎么办?如果这个构造函数为每个对象运行,那么我正在考虑一些方法,但我想我必须在用户运行的网站的每个页面中运行这个方法,所以我再次认为它会是一样的,对吗?您只初始化一次大量变量的解决方案是什么?谢谢
问问题
3365 次
2 回答
17
它为每个类型运行一次AppDomain
。不是每个实例一次。从 C# 4 规范,第 10.12 节:
封闭类类型的静态构造函数在给定的应用程序域中最多执行一次。静态构造函数的执行由在应用程序域中发生的以下第一个事件触发:
- 类类型的一个实例被创建。
- 类类型的任何静态成员都被引用。
请注意关于它是每个封闭类的部分。因此,如果您有一个泛型类型Foo<T>
,那么Foo<string>
它是一个单独的类型Foo<object>
(等),将有单独的静态字段,并将单独调用其静态构造函数。
于 2011-08-14T19:07:53.687 回答
4
于 2011-08-14T19:09:09.787 回答