2014-09-03 65 views
2

任何人都可以解释CLR如何处理静态类吗? CLR是否在内部创建一个用于处理静态类的单例实例?如果没有,为什么我们在C#中有一个静态构造函数? (根据我的理解,我们只使用构造函数来实例化类)CLR如何处理静态类?

回答

3

首先CLR中没有静态类。 CLR不知道静态类的任何内容。 这是C#的功能。

静态类编译为abstract以及sealed类。使它abstract阻止它的实例化,sealed阻止继承。

静态类并不特别,它只是一个简单的类,所有成员都是静态的。

是,CLR内部创建一个单例实例来处理静态 类?

,它是抽象的,不能实例化。

如果不是为什么我们在C#中有一个静态构造函数?

当第一次引用或实例化类型时,将调用静态构造函数。它用于初始化类的静态成员。

When is a static constructor called in C#?

1

构造函数在类型第一次被引用时被调用。它不一定是static类才具有static构造函数。

CLR不会创建static类的单例实例。尽管在初始化之后,它仍将static变量保留在内存中。

+0

“你想建立一个静态构造函数?它并不一定是一个静态构造函数。” - (PC)今年十二月在电影院放映 – 2014-09-03 11:41:25