C# 静的: 静的メンバー

C# 静的: 静的メンバー

C# では、static キーワードを使用して、特定のオブジェクトではなく型自体に属する静的メンバーを宣言できるため、静的メンバーにアクセスするためにオブジェクトを使用する必要はありません。変数、関数、コンストラクター、クラス、プロパティ、演算子、およびイベントは、クラス、インターフェイス、および構造体の static キーワードを使用して変更できます。

注: インデクサーとデストラクターを静的にすることはできません。

メンバーを定義するときに static キーワードを使用する場合、クラス内にこのメンバーのインスタンスが 1 つだけ存在することを意味します。つまり、クラスのメンバーを静的メンバーとして宣言すると、そのオブジェクトの数に関係なく、クラスが作成されると、静的メンバーは 1 回だけ作成され、この静的メンバーはすべてのオブジェクトで共有されます。

1. 静的属性

static を使って定義されたメンバ属性を「静的属性」と呼び、事前にクラスのインスタンスを作成しなくても类名.属性名形式で直接アクセスできます。静的プロパティは、メンバー関数を使用して初期化するだけでなく、クラスの外部で直接初期化することもできます。

例を使用して、静的変数の使用を示してみましょう。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args) 
        {
            Test.str = "IT基礎";
            Console.WriteLine(Test.str);

            Test test1 = new Test();
            test1.getStr();
           
            Test test2 = new Test();
            test2.getStr();
            test2.setStr("https://it-kiso.com/");
            test1.getStr();
            test2.getStr();
        }
    }
    public class Test
    {
        public static string str;
        public void setStr(string s){
            str = s;
        }
        public void getStr(){
            Console.WriteLine(str);
        }
    }
} 

操作の結果は次のようになります。

IT基礎
IT基礎
IT基礎
https://it-kiso.com/
https://it-kiso.com/

2. 静的関数

静的プロパティの定義に加えて、static キーワードはメンバー関数の定義にも使用できます。static を使用して定義されたメンバー関数は「静的関数」と呼ばれます。静的関数は静的プロパティにのみアクセスできます。

次の例は、静的関数の使用を示しています。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args) 
        {
            Test test1 = new Test();
            test1.setStr("IT基礎");
            Test.getStr();
            Test test2 = new Test();
            test2.setStr("https://it-kiso.com/");
            Test.getStr();
        }
    }
    public class Test
    {
        public static string str;
        public void setStr(string s){
            str = s;
        }
        public static void getStr(){
            Console.WriteLine(str);
        }
    }
} 

操作の結果は次のようになります。

IT基礎
https://it-kiso.com/

「 C# 静的: 静的メンバー」についてわかりやすく解説!絶対に観るべきベスト2動画

【ゆっくり解説】 静的型付けと動的型付けの違いとは? 【プログラミング】
9.10 静的メンバー – C# の学習