3

CLR が静的クラスを処理する方法を説明できる人はいますか? CLR は、静的クラスを内部で処理するためのシングルトン インスタンスを 1 つ作成しますか? そうでない場合、なぜ C# に静的コンストラクターがあるのでしょうか? (私の理解では、コンストラクターはクラスのインスタンス化にのみ使用します)

4

2 に答える 2

4

まず、CLR には静的クラスがありません。CLR は静的クラスについて何も知りません。C#の特徴です。

abstract静的クラスはクラスと同様にコンパイルされますsealed。インスタンスabstract化をsealed防ぎ、継承を防ぎます。

静的クラスは特別なものではなく、すべてのメンバーが静的な単純なクラスです。

CLR は、静的クラスを処理するために 1 つのシングルトン インスタンスを内部的に作成しますか?

いいえ、抽象的でインスタンス化できません。

そうでない場合、なぜ C# に静的コンストラクターがあるのでしょうか?

静的コンストラクターは、型が最初に参照またはインスタンス化されるときに呼び出されます。クラスの静的メンバーを初期化するために使用されます。

C#で静的コンストラクターが呼び出されるのはいつですか?

于 2014-09-03T11:43:45.493 に答える
2

staticコンストラクターは、型が最初に参照されるときに呼び出されます。コンストラクタstaticを持つためにクラスである必要はありません。static

staticCLR は、クラスのシングルトン インスタンスを作成しません。static初期化された後でも、変数はメモリに保持されます。

于 2014-09-03T11:39:59.733 に答える