[英]Declaring a non-static class as static
我有一个称为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
(声明为静态类的非静态类)之间A
什么区别?
在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
完全无关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.