C# プロジェクト全体で共有するクラスのインスタンスを作成したい


基本的なことかもしれないのですが、色々調べても分からなかった為質問させて頂きます。

プログラム全体で共有するクラスとそのクラスのインスタンスを作るにはどこにどう書いたらいいのでしょうか？

例）  
TESTclass というクラスがあり、public TESTclass tescls = new TESTclass() でインスタンスを作成し、  
そのインスタンスをForm1、Form2、Form3 ・・・ で使用したい。  
この、public TESTclass tescls = new TESTclass() をどこにどう書けば、プログラム全体で共有できるか？




`static`フィールドの初期化子を使うのが良いと思います。

[code]

    class TESTclass
    {
        internal static readonly TESTclass tescls = new TESTclass();
    }
    
    // Form1.cs
    TESTclass.tescls.何らかの処理();
    
[/code]

上の例ではフィールドを`TESTclass`に定義していますが、別にどのクラスで宣言しても良いです。

このような静的フィールドの初期化は一度しか実行されないことが保証されているため通常の代入よりスレッドセーフです。

なお.NET Frameworkの習慣ではこのようなフィールドには`Default`という名前を付けることが多いです。




`static`フィールドの初期化子を使うのが良いと思います。

[code]

    class TESTclass
    {
        internal static readonly TESTclass tescls = new TESTclass();
    }
    
    // Form1.cs
    TESTclass.tescls.何らかの処理();
    
[/code]

上の例ではフィールドを`TESTclass`に定義していますが、別にどのクラスで宣言しても良いです。

このような静的フィールドの初期化は一度しか実行されないことが保証されているため通常の代入よりスレッドセーフです。

なお.NET Frameworkの習慣ではこのようなフィールドには`Default`という名前を付けることが多いです。

