加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C#中,静态构造函数是为每个对象初始化运行的,还是只运行一次?

发布时间:2020-12-15 19:50:21 所属栏目:百科 来源:网络整理
导读:在我的类我有一个字符串对象的静态字典,其中包含大量的项目(它从一个文件中读取并初始化它们)我写了一个静态构造函数,这需要几秒钟,但我想做一次为了更快,因为我在ASP.Net中这样做,我希望我的网站不要有这个开销,我该怎么办?如果这个构造函数为每个对象运行
在我的类我有一个字符串对象的静态字典,其中包含大量的项目(它从一个文件中读取并初始化它们)我写了一个静态构造函数,这需要几秒钟,但我想做一次为了更快,因为我在ASP.Net中这样做,我希望我的网站不要有这个开销,我该怎么办?如果这个构造函数为每个对象运行,那么我正在考虑一些方法,但我想我必须在用户运行的网站的每个页面中运行此方法,所以我想再次它会是相同的,我是对的吗?
什么是初始化一大组变量的解决方案?谢谢

解决方法

它针对每个AppDomain的类型运行一次.每个实例不一次.从C#4规范,第10.12节:

The static constructor for a closed class type executes at most once in a given application domain. The execution of a static constructor is triggered by the first of the following events to occur within an application domain:

  • An instance of the class type is created.
  • Any of the static members of the class type are referenced.

请注意关于它的部分是每个封闭的类.因此,如果你有一个泛型类型Foo< T>,那么Foo< string>是一个单独的类型Foo< object> (等),将具有单独的静态字段,并将单独调用其静态构造函数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读