静态属性引用非静态方法

use*_*307 2 c# static-methods

静态属性如何引用非静态方法?

例:

public static int UserID
{
  get
  {
     return GetUserID();
  }
}

private int GetUserID()
{
  return 1;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它时,我得到错误:"非静态字段,方法或属性需要对象引用"GetUserID()"

Ree*_*sey 12

这不起作用.

定义静态属性(或静态方法)时,您将定义一个适用于类类型的属性,而不是类的实例.

另一方面,实例属性和方法适用于特定的,构造的类实例.要使用它们,您需要引用该特定实例.(反过来说,没问题.)

作为一个例子,想想Fruit和一个"Apple"类.假设苹果类具有一个实例属性,这个属性是Apple此时的成熟程度.

你不会像苹果那样描述它的成熟程度,而是描述一个特定的"Apple"(实例).另一方面,您可以拥有一个苹果实例,并询问它是否包含种子(可能在Apple类本身上定义(静态)).

  • 转基因无籽苹果呢? (2认同)