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

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 サイトの他の関連記事を参照してください。

    声明
    この記事はtutorialspointで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
    C#と.NET:2つの関係を理解し​​ますC#と.NET:2つの関係を理解し​​ますApr 17, 2025 am 12:07 AM

    C#と.NETの関係は切り離せませんが、同じものではありません。 C#はプログラミング言語であり、.NETは開発プ​​ラットフォームです。 C#は、コードの書き込み、.NETの中間言語(IL)にコンパイルされ、.NET Runtime(CLR)によって実行されるために使用されます。

    c#.netの継続的な関連性:現在の使用法を見るc#.netの継続的な関連性:現在の使用法を見るApr 16, 2025 am 12:07 AM

    C#.NETは、複数のアプリケーション開発をサポートする強力なツールとライブラリを提供するため、依然として重要です。 1)C#は.NETフレームワークを組み合わせて、開発を効率的かつ便利にします。 2)C#のタイプの安全性とゴミ収集メカニズムは、その利点を高めます。 3).NETは、クロスプラットフォームの実行環境とリッチAPIを提供し、開発の柔軟性を向上させます。

    Webからデスクトップまで:C#.NETの汎用性Webからデスクトップまで:C#.NETの汎用性Apr 15, 2025 am 12:07 AM

    c#.netisversatileforbothwebanddesktopdevelopment.1)forweb、useasp.netfordynamicapplications.2)fordesktop、equindowsorwpfforrichinterfaces.3)usexamarinforcross-platformdeveliment、enabling deshacrosswindows、

    c#.net and the Future:新しいテクノロジーへの適応c#.net and the Future:新しいテクノロジーへの適応Apr 14, 2025 am 12:06 AM

    C#と.NETは、継続的な更新と最適化を通じて、新しいテクノロジーのニーズに適応します。 1)C#9.0および.NET5は、レコードタイプとパフォーマンスの最適化を導入します。 2).Netcoreは、クラウドネイティブおよびコンテナ化されたサポートを強化します。 3)ASP.Netcoreは、最新のWebテクノロジーと統合されています。 4)ML.NETは、機械学習と人工知能をサポートしています。 5)非同期プログラミングとベストプラクティスはパフォーマンスを改善します。

    c#.netはあなたにぴったりですか?その適用性の評価c#.netはあなたにぴったりですか?その適用性の評価Apr 13, 2025 am 12:03 AM

    c#.netissuitableforenterprise-levelApplicationsとsystemduetoitsSystemdutyping、richlibraries、androbustperformance.

    .NET内のC#コード:プログラミングプロセスの調査.NET内のC#コード:プログラミングプロセスの調査Apr 12, 2025 am 12:02 AM

    .NETでのC#のプログラミングプロセスには、次の手順が含まれます。1)C#コードの作成、2)中間言語(IL)にコンパイルし、3).NETランタイム(CLR)によって実行される。 .NETのC#の利点は、デスクトップアプリケーションからWebサービスまでのさまざまな開発シナリオに適した、最新の構文、強力なタイプシステム、および.NETフレームワークとの緊密な統合です。

    C#.NET:コアの概念とプログラミングの基礎を探るC#.NET:コアの概念とプログラミングの基礎を探るApr 10, 2025 am 09:32 AM

    C#は、Microsoftによって開発された最新のオブジェクト指向プログラミング言語であり、.NETフレームワークの一部として開発されています。 1.C#は、カプセル化、継承、多型を含むオブジェクト指向プログラミング(OOP)をサポートしています。 2。C#の非同期プログラミングは非同期を通じて実装され、適用応答性を向上させるためにキーワードを待ちます。 3. LINQを使用してデータ収集を簡潔に処理します。 4.一般的なエラーには、null参照の例外と、範囲外の例外インデックスが含まれます。デバッグスキルには、デバッガーと例外処理の使用が含まれます。 5.パフォーマンスの最適化には、StringBuilderの使用と、不必要な梱包とボクシングの回避が含まれます。

    テストC#.NETアプリケーション:ユニット、統合、およびエンドツーエンドテストテストC#.NETアプリケーション:ユニット、統合、およびエンドツーエンドテストApr 09, 2025 am 12:04 AM

    C#.NETアプリケーションのテスト戦略には、ユニットテスト、統合テスト、エンドツーエンドテストが含まれます。 1.単位テストにより、コードの最小ユニットがMSTEST、ヌニット、またはXUNITフレームワークを使用して独立して動作することを保証します。 2。統合テストでは、一般的に使用されるシミュレートされたデータと外部サービスを組み合わせた複数のユニットの機能を検証します。 3.エンドツーエンドのテストでは、ユーザーの完全な操作プロセスをシミュレートし、通常、セレンは自動テストに使用されます。

    See all articles

    ホット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ヘンタイを無料で生成します。

    ホットツール

    WebStorm Mac版

    WebStorm Mac版

    便利なJavaScript開発ツール

    メモ帳++7.3.1

    メモ帳++7.3.1

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

    EditPlus 中国語クラック版

    EditPlus 中国語クラック版

    サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

    SublimeText3 中国語版

    SublimeText3 中国語版

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

    VSCode Windows 64 ビットのダウンロード

    VSCode Windows 64 ビットのダウンロード

    Microsoft によって発売された無料で強力な IDE エディター