这两个构造函数都做相同的事情吗?

吸毒者

这两个代码块都做同样的事情吗?

class A {
   public static int s;
   A(){}
   static A(){s = 100;}
}

class A {
   public static int s=100;
   A(){}
   //static A(){s = 100;} do not use
}

他们做同样的事情吗?我想是这样。

乔恩·斯基特

不,它们的行为方式不尽相同。如果没有静态构造函数,则类型初始化程序执行的确切时间要宽松得多-它可能比您期望的更早或更晚发生

如果有静态构造函数,则在首次使用该类型(根据要访问的任何静态成员或所创建的实例)时,将执行类型初始化器。

没有静态构造函数时,唯一的保证是初始化程序将在首次访问静态字段之前(并且仍然是一次)执行。取决于JIT,这可能意味着它执行得很早(例如,当您首次执行可能使用成员的方法时)或执行得很晚(调用不使用任何字段的静态成员之后,或者在创建和使用实例之后)执行。

在IL中,区别在于没有静态构造函数的类型具有beforefieldinit标志;一个带有静态构造函数的没有。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我如何使用 ":this() 链接这两个构造函数

来自分类Dev

这两个路由在nodejs中相同吗?

来自分类Dev

有人可以澄清原型和构造函数这两个词的歧义吗?

来自分类Dev

这两个XML是否相同?

来自分类Dev

这两个变量如何相同?

来自分类Dev

这两个功能如何相同?

来自分类Dev

这两个查询是否相同?

来自分类Dev

这两个功能等效吗?

来自分类Dev

这两个xml是等效的吗?

来自分类Dev

等待两个事情循环吗?

来自分类Dev

这两个C ++函数的区别

来自分类Dev

这两个C#类构造函数有什么区别?

来自分类Dev

这两个python导入方法完全相同吗?

来自分类Dev

这两个MS查询会给我相同的输出吗?

来自分类Dev

C ++在构造函数中需要两个类吗?

来自分类Dev

为什么这两个JavaScript函数调用具有相同的“ this”值?

来自分类Dev

为什么这两个版本的高阶函数没有给出相同的结果?

来自分类Dev

如何为这两个具有相同定义的函数提供更通用的类型?

来自分类Dev

两个构造函数

来自分类Dev

F#中这两个函数之间有什么区别吗?

来自分类Dev

F#中这两个函数之间有什么区别吗?

来自分类Dev

这两个python语句是否相同?

来自分类Dev

iOS iCloud容器:这两个容器是否相同?

来自分类Dev

如何使这两个div的高度相同?

来自分类Dev

为什么这两个指针访问相同的元素?

来自分类Dev

这两个python if语句是否相同?

来自分类Dev

为什么这两个代码给出的结果相同?

来自分类Dev

这两个程序的演奏是否相同?

来自分类Dev

setfacl:这两个命令是否相同?