9

可能重复:
c# 中的静态方法是什么?

在从这么多论坛进行研究之后,我发现很难弄清楚静态和非静态(实例)成员的实际概念,我决定在这里提出我的问题:

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

4

2 回答 2

11

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

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

例如,假设您想计算一个类的实例数?您将如何将其存储在单个实例中?

参考:

  1. C# 中的静态与非静态方法
  2. 静态与非静态方法
于 2012-10-31T10:13:48.513 回答
7
  • static成员是每个类一个,但非静态成员是每个实例一个。

  • static成员通过封装它们的类名访问,但非静态成员通过对象引用访问。

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

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

  • 有关性能相关点,请参见此处

于 2012-10-31T10:16:42.157 回答