首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态变量初始化

问静态变量初始化
EN

Stack Overflow用户
提问于 2011-05-10 12:18:18
回答 2查看 59.2K关注 0票数 34

今天,我与我的同事进行了讨论,并总结了以下几点。如果一切都是正确的,或者需要进行一些修改,请投一些光。

  1. 当未在类中定义静态构造函数时,静态字段在使用前被初始化。当在类中定义静态构造函数时,静态字段在使用之前或作为(在创建实例之前)的一部分进行初始化。如果在静态方法中没有访问静态字段并调用该静态方法,则为
  2. 。只有在该类中定义了静态构造函数时,才会初始化静态字段。如果可能,应在类中避免静态构造函数。
  3. 。

。

EN

回答 2

Stack Overflow用户

发布于 2011-05-10 12:30:08

静态构造函数将给您一个小小的控制,当它被调用时会发生什么。

代码语言:javascript
复制
public class UtilityClass
{
  //
  // Resources
  //

  // r1 will be initialized by the static constructor
  static Resource1 r1 = null;

  // r2 will be initialized first, as static constructors are 
  // invoked after the static variables are initialized
  static Resource2 r2 = new Resource2();

  static UtilityClass()
  {
    r1 = new Resource1();
  }

  static void f1(){}
  static void f2(){}
}

4.静态构造器速度慢

静态构造函数执行的确切时间取决于实现,但受以下规则的约束:

类的静态构造函数在创建类的任何实例之前执行。类的静态构造函数在类的任何静态成员之前执行。

类的referenced.

  • The静态构造函数在类的静态字段初始化器(如果有的话)之后执行。

未指定不同的类。

票数 15
EN

Stack Overflow用户

发布于 2011-05-10 12:55:12

你所有的观点都是正确的。

应该避免静态构造函数的原因是编译器在任何地方注入代码--任何调用该类的方法都是为了检查是否调用了静态构造函数。这对业绩有负面影响。

您可以做的是在类中有一个私有静态字段,在调用默认(或其他非静态)构造函数时为其分配一个虚拟值。这将初始化对象创建时的所有静态字段。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5949889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档