0

私はと呼ばれる静的クラスを持っていますA:

public static class A
{
}

Bそして、静的ではないと呼ばれる別のクラス:

public class B
{
}

その後、非静的クラスBを静的として宣言しました。

public class c
{
    // declare a non static class (B) as static
    public static B b = new B();
}

A(静的クラス) とb(静的クラスとして宣言された非静的クラス)の違いは何ですか?

4

2 に答える 2

3

では、静的メンバー (メソッド、フィールド、プロパティ)のみ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

于 2013-03-23T16:35:06.610 に答える
0

違いは、静的変数静的クラスの違いです。b非静的型の静的変数ですBA、静的クラスです。

于 2013-03-23T16:35:14.870 に答える