[解決済み] beforefieldinitフラグは何をするのですか?
2023-06-24 23:29:44
質問
beforefieldinitフラグは何をするのですか? 私のクラスのILを見ると、このフラグがありますが、このフラグが実際に何をしているのかわかりません?
どのように解決するのですか?
参照 私の記事 をご覧ください。
基本的には
beforefieldinit
は、静的フィールドが参照される前の任意の時点で型を初期化することができることを意味します。
理論的には
であることができるということです。
非常に怠惰に
フィールドに触れない静的メソッドを呼び出すと、JITは型を初期化する必要がありません。
実際には
は、クラスが初期化されることを意味します。
より早く
である最初のメソッドの開始時に初期化されるのは問題ありません。
は
で初期化されても問題ありません。これを
は
を持つ
beforefieldinit
が適用されている場合、型の初期化は最初の
実際の
を使用する必要があります。
では、仮に
public static void DoSomething(bool which)
{
if (which)
{
FirstType.Foo();
}
else
{
SecondType.Bar();
}
}
両方のタイプに
beforefieldinit
が適用されている場合(C#では型に静的コンストラクタがない限り、デフォルトで適用されます)、両者は
両方とも
の開始時に初期化されます。
DoSomething
メソッドの開始時に初期化されます (通常 - 保証はできません)。もし、それらが
beforefieldinit
がなければ
一つ
のみが初期化されます。
のときに静的コンストラクタ(空でも可!)を使うのが一般的なのはこのためです。 シングルトンパターンを実装する場合 .
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み】コンパイラーエラーメッセージ。コンパイラはエラーコード -532462766 で失敗しました。
-
[解決済み] C#で「yield break;」は何をするのか?
-
[解決済み] LINQ: フィルタリング基準で SingleOrDefault と FirstOrDefault() を使用する場合
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] ディープクローンオブジェクト
-
[解決済み] C#で文字列のエンコーディングを手動で指定せずに、一貫性のあるバイト表現を得るには?
-
[解決済み] C#でベースコンストラクタを呼び出す
-
[解決済み] なぜList<T>を継承しないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] ファイル *.mdf をデータベースとしてアタッチできない
-
[解決済み] ポストバックまたはコールバックの引数が無効です。 イベント検証は '<pages enableEventValidation="true"/>' を使用して有効になっています。
-
[解決済み] NetFx45WebLinkとNetFx45RedistLinkの違いは何ですか?
-
[解決済み] .Netの配列のLongLengthの目的は何ですか?
-
[解決済み] ネットワークの位置からアセンブリをロードすることはできません
-
[解決済み] ファイルまたはアセンブリをロードできませんでした 操作がサポートされていません。(HRESULT: 0x80131515 からの例外)
-
[解決済み] System.Timers.Timer vs System.Threading.Timer
-
[解決済み] LINQクエリでToList()とToArray()のどちらを呼び出すのが良いですか?
-
[解決済み] Visual Studioのコンパイルエラー "mismatch between processor architecture "を修正するにはどうしたらいいですか?
-
[解決済み] HashSetとListの性能比較