1

以下单例类工作正常,

public class Elvis
{
    private static Elvis elvis = new Elvis();

    private Elvis()
    {

    }

    public static Elvis Instance()
    {
        return elvis;
    }
}

但是,当我更改return elvis;为时return this.elvis,我得到non-static variable this cannot be referenced from a static context. 为什么是这样?

4

2 回答 2

11

this指当前对象实例。方法static不包含在对象中,它包含在类中。

于 2012-04-17T01:19:19.920 回答
1

“this”和“static”这两个关键词在某种意义上是对立的。当您引用当前对象的成员时使用“this”,即您有一个对象,并且您可能正在访问一个非静态成员。静态成员、函数和属性是所有对象的“全局”,它们不属于任何特定对象,而是属于类本身。

悠久的历史变短了。“this”表示对象的当前实例。静态成员不属于任何实例。

于 2012-04-17T01:23:16.053 回答