【发布时间】:2012-10-20 18:22:05
【问题描述】:
我发现很难弄清楚静态和非静态(实例)成员的实际概念,在研究了这么多论坛后,我决定在这里提出我的问题:
静态成员和非静态成员有什么区别?
【问题讨论】:
-
那甚至包括SO吗?我估计很多类似的线程
标签: c#
我发现很难弄清楚静态和非静态(实例)成员的实际概念,在研究了这么多论坛后,我决定在这里提出我的问题:
静态成员和非静态成员有什么区别?
【问题讨论】:
标签: c#
static 方法可以直接从类中访问,而non-static 方法(或者我喜欢称之为实例方法)必须从实例中访问。这就是为什么需要对实例方法进行实例化,而对于静态方法则不需要。
在 OOP 中,static variables 用于无法由实例变量存储的值。 static methods 无法访问类中的实例方法或变量。当然这是有道理的,因为该静态方法不知道我们试图引用哪个类的实例。
例如假设您想计算一个类的实例数?您将如何将其存储在单个实例中?
参考文献:
【讨论】:
static 成员每个类一个,但非静态成员每个实例一个。
static 成员通过封装它们的类名访问,但非静态成员通过对象引用访问。
static成员不能在不实例化对象的情况下使用非静态方法,但非静态成员可以直接使用static成员。
static constructor 用于初始化静态字段,但对于非静态字段,使用普通实例构造函数。
请参阅here 了解与性能相关的要点。
【讨论】: