静态和非静态成员之间的区别?

时间:2012-10-31 10:06:01

标签: c#

  

可能重复:
  What’s a static method in c#?

我发现很难清楚我对静态和非静态(实例)成员的实际概念的看法,经过这么多论坛的研究,我决定在这里提出我的问题:

静态和非静态成员之间有什么区别?

2 个答案:

答案 0 :(得分:10)

可以直接从类中访问static方法,而必须从实例访问non-static方法(或我喜欢调用它们的实例方法)。这就是为什么需要对例如方法进行实例化的原因,而对于静态方法则不需要。

在OOP中,static variables用于实例变量无法存储的值。 static methods无法访问类中的实例方法或变量。当然这是有道理的,因为静态方法不知道我们试图引用的类的哪个实例。

e.g。假设您想要计算一个类的实例数量?你会如何将它存储在一个实例中?

参考文献:

  1. Static vs. Non-Static method in C#
  2. Static vs. non-static method

答案 1 :(得分:6)

  • static成员是每个类一个,但非静态成员是每个实例一个。

  • static成员可以通过其类名来访问它们,但是通过对象引用访问非静态成员。

  • static成员在不实例化对象的情况下不能使用非静态方法,但非静态成员可以直接使用static成员。

  • static constructor用于初始化静态字段,但对于非静态字段,则使用普通实例构造函数。

  • 有关与效果相关的观点,请参阅here