【问题标题】:Difference between static and non static members? [duplicate]静态成员和非静态成员的区别? [复制]
【发布时间】:2012-10-20 18:22:05
【问题描述】:

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

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

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

【问题讨论】:

  • 那甚至包括SO吗?我估计很多类似的线程

标签: c#


【解决方案1】:

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

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

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

参考文献:

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

【讨论】:

  • 静态变量是什么意思?除了成员(字段、属性或方法)之外,不能有任何静态变量。
  • 这些只是变量的别称,参考en.wikipedia.org/wiki/Static_variable
  • 好点谢谢。
【解决方案2】:
  • static 成员每个类一个,但非静态成员每个实例一个。

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

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

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

  • 请参阅here 了解与性能相关的要点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多