ホームページ バックエンド開発 C#.Net チュートリアル C# での静的コンストラクターの用途は何ですか?

C# での静的コンストラクターの用途は何ですか?

Aug 23, 2023 pm 10:25 PM

C# での静的コンストラクターの用途は何ですか?

静的コンストラクターは、静的データを初期化するか、特定の操作を実行するために使用されます。 翻訳する必要がある内容は次のとおりです。 最初の呼び出しの前に自動的に実行される操作 インスタンスが作成されたとき、または静的メンバーが参照されたとき。

静的コンストラクターは、アンマネージ コードのラッパー クラスを作成する場合に便利です。 コンストラクターが LoadLibrary メソッドを呼び出せるとき。静的コンストラクターについても同様です 実行時にチェックできない型パラメータを強制するのに便利な場所 制約はコンパイル時にチェックされます。

静的コンストラクターには次のプロパティがあります -

  • 静的コンストラクターはアクセス修飾子やパラメーターを受け入れません。

  • #クラスまたは構造体には、静的コンストラクターを 1 つだけ含めることができます。

  • 静的コンストラクターは継承またはオーバーロードできません。

  • 静的コンストラクターは直接呼び出すことはできませんが、他のメソッドを通じてのみ呼び出すことができます

  • 共通言語ランタイム (CLR)。自動的に呼び出されます。
  • ユーザーは、静的コンストラクターがいつ実行されるかを制御できません。 プログラム。

  • 静的コンストラクターは、クラスを初期化する前に自動的に呼び出されます。 最初のインスタンスが作成されるか、静的メンバーを参照します。静的な コンストラクターはインスタンス コンストラクターの前に実行されます。型の静的コンストラクター 静的メソッドがイベントまたはデリゲートに割り当てられ、呼び出されるときに呼び出されます。 割り当てられたときはそうではありません。静的フィールド変数初期化子が存在する場合 静的コンストラクターのクラスの場合、それらはテキストの順序で実行されます。 テキスト順に実行される静的コンストラクターを持つクラス これらは実行前のクラス宣言に表示されます。 静的フィールドを初期化するための静的コンストラクターを提供しない場合、すべての静的フィールドは最初のアクセス時に宣言された順序で自動的に初期化されます。

    フィールドは、C# のデフォルト値にリストされている値に初期化されます。 静的コンストラクターが例外をスローした場合、そのコンストラクターはランタイムによって呼び出されません。 2 回目では、型は存続期間中初期化されないままになります。 プログラムが実行されるアプリケーション ドメイン。最も一般的には、 静的コンストラクターがスローされると TypeInitializationException が発生する 型をインスタンス化できない、またはハンドルされない例外が発生した場合 静的コンストラクター。明示的に定義されていない暗黙的な静的コンストラクターの場合 ソースコードで定義されているため、トラブルシューティングにはチェックが必要になる場合があります 中間言語 (IL) コード。
  • 静的コンストラクターが存在すると追加が妨げられます BeforeFieldInit タイプのプロパティ。これにより、実行時の最適化が制限されます。

  • 静的読み取り専用として宣言されたフィールドは、その一部としてのみ割り当てることができます 宣言または静的コンストラクター内。明示的な静的コンストラクターがない場合 翻訳する必要がある内容は次のとおりです。必須、静的フィールドではなく、宣言時に静的フィールドを初期化します。 翻訳する必要がある内容は次のとおりです。必須、静的フィールドではなく、宣言時に静的フィールドを初期化します。 コンストラクターは、実行時の最適化を向上させるために使用されます。

  • リアルタイム デモンストレーション

    using System;
    namespace DemoApplication{
       public class Program{
          static void Main(string[] args){
             Car user = new Car();
             Car user1 = new Car();
             Console.ReadLine();
          }
       }
       public class Car{
          static Car(){
             Console.WriteLine("Static constructor called");
          }
          public Car(){
             Console.WriteLine("Default constructor called");
          }
       }
    }
    ログイン後にコピー

    出力

    Static constructor called
    Default constructor called
    Default constructor called
    ログイン後にコピー

    上記の例では、静的コンストラクターが呼び出されるのは一度だけです。

    オンライン デモンストレーション

    using System;
    using System.Threading;
    namespace DemoApplication{
       public class Car{
          protected static readonly DateTime globalStartTime;
          protected int RouteNumber { get; set; }
          static Car(){
             globalStartTime = DateTime.Now;
             Console.WriteLine($"Static constructor called. Global start time:
             {globalStartTime.ToLongTimeString()}");
          }
          public Car(int routeNum){
             RouteNumber = routeNum;
             Console.WriteLine($"Car {RouteNumber} is created.");
          }
          public void Drive(){
             TimeSpan elapsedTime = DateTime.Now - globalStartTime;
             Console.WriteLine($"Car {this.RouteNumber} is starting its route
             {elapsedTime.Milliseconds} minutes after global start time
             {globalStartTime.ToShortTimeString()}.");
          }
       }
       class TestCar{
          static void Main(){
             Car car1 = new Car(1);
             Car car2 = new Car(2);
             car1.Drive();
             Thread.Sleep(25);
             car2.Drive();
             Console.ReadLine();
          }
       }
    }
    ログイン後にコピー

    出力

    Static constructor called. Global start time:
    7:09:06 AM
    Car 1 is created.
    Car 2 is created.
    Car 1 is starting its route25 minutes after global start time7:09 AM.
    Car 2 is starting its route50 minutes after global start time7:09 AM.
    ログイン後にコピー

    以上がC# での静的コンストラクターの用途は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    C文字列におけるcharの役割は何ですか C文字列におけるcharの役割は何ですか Apr 03, 2025 pm 03:15 PM

    Cでは、文字列でCharタイプが使用されます。1。単一の文字を保存します。 2。配列を使用して文字列を表し、ヌルターミネーターで終了します。 3。文字列操作関数を介して動作します。 4.キーボードから文字列を読み取りまたは出力します。

    C言語で特殊文字を処理する方法 C言語で特殊文字を処理する方法 Apr 03, 2025 pm 03:18 PM

    C言語では、以下などのエスケープシーケンスを通じて特殊文字が処理されます。\ nはラインブレークを表します。 \ tはタブ文字を意味します。 ESACEシーケンスまたは文字定数を使用して、Char C = '\ n'などの特殊文字を表します。バックスラッシュは2回逃げる必要があることに注意してください。さまざまなプラットフォームとコンパイラが異なるエスケープシーケンスを持っている場合があります。ドキュメントを参照してください。

    C言語でさまざまなシンボルを使用する方法 C言語でさまざまなシンボルを使用する方法 Apr 03, 2025 pm 04:48 PM

    c言語のシンボルの使用方法は、算術、割り当て、条件、ロジック、ビット演算子などをカバーします。算術演算子は基本的な数学的操作に使用されます。割り当てと追加、下位、乗算、除算の割り当てには、条件操作に使用されます。ポインター、ファイル終了マーカー、および非数値値。

    C言語のcharとwchar_tの違い C言語のcharとwchar_tの違い Apr 03, 2025 pm 03:09 PM

    C言語では、charとwchar_tの主な違いは文字エンコードです。CharはASCIIを使用するか、ASCIIを拡張し、WCHAR_TはUnicodeを使用します。 Charは1〜2バイトを占め、WCHAR_Tは2〜4バイトを占有します。 charは英語のテキストに適しており、wchar_tは多言語テキストに適しています。 CHARは広くサポートされており、WCHAR_TはコンパイラとオペレーティングシステムがUnicodeをサポートするかどうかに依存します。 CHARの文字範囲は限られており、WCHAR_Tの文字範囲が大きく、特別な機能が算術演算に使用されます。

    マルチスレッドと非同期C#の違い マルチスレッドと非同期C#の違い Apr 03, 2025 pm 02:57 PM

    マルチスレッドと非同期の違いは、マルチスレッドが複数のスレッドを同時に実行し、現在のスレッドをブロックせずに非同期に操作を実行することです。マルチスレッドは計算集約型タスクに使用されますが、非同期はユーザーインタラクションに使用されます。マルチスレッドの利点は、コンピューティングのパフォーマンスを改善することですが、非同期の利点はUIスレッドをブロックしないことです。マルチスレッドまたは非同期を選択することは、タスクの性質に依存します。計算集約型タスクマルチスレッド、外部リソースと相互作用し、UIの応答性を非同期に使用する必要があるタスクを使用します。

    C言語でCharを変換する方法 C言語でCharを変換する方法 Apr 03, 2025 pm 03:21 PM

    C言語では、charタイプの変換は、キャスト:キャスト文字を使用することにより、別のタイプに直接変換できます。自動タイプ変換:あるタイプのデータが別のタイプの値に対応できる場合、コンパイラは自動的に変換します。

    C言語合計の機能は何ですか? C言語合計の機能は何ですか? Apr 03, 2025 pm 02:21 PM

    C言語に組み込みの合計機能はないため、自分で書く必要があります。合計は、配列を通過して要素を蓄積することで達成できます。ループバージョン:合計は、ループとアレイの長さを使用して計算されます。ポインターバージョン:ポインターを使用してアレイ要素を指し示し、効率的な合計が自己概要ポインターを通じて達成されます。アレイバージョンを動的に割り当てます:[アレイ]を動的に割り当ててメモリを自分で管理し、メモリの漏れを防ぐために割り当てられたメモリが解放されます。

    C言語でchar配列の使用方法 C言語でchar配列の使用方法 Apr 03, 2025 pm 03:24 PM

    Char Arrayは文字シーケンスをC言語で保存し、char array_name [size]として宣言されます。アクセス要素はサブスクリプト演算子に渡され、要素は文字列のエンドポイントを表すnullターミネーター「\ 0」で終了します。 C言語は、strlen()、strcpy()、strcat()、strcmp()など、さまざまな文字列操作関数を提供します。

    See all articles