开发者

When do static variables get initialized in C#?

I was wondering about when does a static variable(in a class) come into picture(init开发者_如何学Pythonialized)? Is it after the instance constructor called for the first time or after the class loads? When does a class loading occur?


Oh, that is complex. It depends on whether the beforefieldinit flag is set, which in turn (in C#) depends on whether there is a static constructor. And worse; in .NET 4 I believe the behaviour changed to make it more "lazy" than it used to be.

Frankly, I wouldn't code to any specific behaviour here; simply: static fields will be initialized before you try to use them, as long as you use regular code to access them.

Jon Skeet has a good write-up on this here and here


Static variables comes into picture after the corresponding class loading. It is not after constructor calling, because constructor calling comes into play when we are using new operator to create object of class and static variables are available on class level not on object level.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜