では、静的メンバー (メソッド、フィールド、プロパティ)のみstatic class
を宣言できます。非静的クラスでは、静的メンバーとインスタンス (非静的) メンバーの両方を宣言できます。
また、静的クラスからクラスを派生させたり、インスタンス化したり、型引数として使用したりすることはできません。
静的メンバーを定義する場合:
public static B b = new B();
b
...では、この型のフィールドはB
、宣言した型にのみ属していると言っています。非静的フィールドは型のインスタンスに属しています。
たとえば、次の場合:
class MyClass
{
public static string myStaticString = "";
public string myInstanceString = "";
}
次に、を変更するmyInstanceString
と、その値はその特定のインスタンスに対してのみ変更されます。
MyClass myInstance1 = new MyClass();
MyClass myInstance2 = new MyClass();
myInstance1.myInstanceString = "1";
myInstance2.myInstanceString = "2";
Console.WriteLine(myInstance1.myInstanceString); // Prints: 1
Console.WriteLine(myInstance2.myInstanceString); // Prints: 2
しかし、 を変更するmyStaticString
と、その型を使用するすべての人の値が変更されます。
MyClass.myStaticString = "1";
MyClass.myStaticString = "2";
Console.WriteLine(MyClass.myStaticString); // Prints: 2
string
そして、それは(またはB
あなたの例では)がとして宣言されたかどうかとはまったく関係ありませんstatic
。