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」の2つのキーワードは、ある意味で拮抗的です。現在のオブジェクトのメンバーを参照している場合、つまりオブジェクトがあり、おそらく非静的メンバーにアクセスしている場合は、「this」を使用します。静的メンバー、関数、およびプロパティは、すべてのオブジェクトの「グローバル」であり、特定のオブジェクトではなく、クラス自体に属します。

長い歴史は短くなりました。「これ」は、このオブジェクトの現在のインスタンスを意味します。静的メンバーはどのインスタンスにも属していません。

于 2012-04-17T01:23:16.053 に答える