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# の学習