2013-03-23 5 views
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 (нестатический класс объявлен как статический класс)?

+0

Один статический, а другой нет? – Oded

ответ

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.

+1

И, конечно, вы не можете создать экземпляр статического класса (вернее, у вас может быть только один экземпляр). – Oded

0

Разница заключается разница между static variable и static class. b - статическая переменная нестатического типа B, однако A является статическим классом.

Смежные вопросы