0

プロパティ、クラス変数など、すべての非ローカル変数に対して「this」ステートメントを使用するのが好きです。これは、コードを読みやすくし、この変数がどこから得られたのかを簡単に理解できるようにするためです。

object someVar;

object SomeProperty { get; set }

void SomeMethod(object arg1, object arg2)
{
  this.SomeProperty = arg1;
  this.someVar = arg2;
}

「これ」の正しい使い方は何だと思いますか?

4

6 に答える 6

6

this良いことです。thisあいまいさを解消します。

Ô_o:

public class Foo
{
    private string bar

    public Foo(string bar)
    {
        bar = bar;
    }
}

アンダースコアは不十分です (C++ ではなく C# です):

public class Foo
{
    private string _bar

    public Foo(string bar)
    {
        _bar = bar;
    }
}

わーい:

public class Foo
{
    private string bar

    public Foo(string bar)
    {
        this.bar = bar;
    }
}
于 2009-03-16T11:18:33.653 に答える
2

以前はコンストラクターでのみ使用していたため、一貫性を保つためにメンバー変数に ctor パラメーターと同じ名前を付けることができました。auto propertiesを使用しているので、プロパティとして必要のないメンバー変数がない限り、どこでも使用しません (完全にプライベートなプロパティを持つのは好きではありません。どういうわけか奇妙に思えます)。

于 2009-03-16T11:17:36.620 に答える
1

通常、「this」キーワードを使用して、クラス/オブジェクト変数とメソッド パラメーターの間のあいまいさを取り除きます。

于 2009-03-16T11:21:36.707 に答える
1

これを使用するには、 2 つの必須の役割があります

  • 関数パラメーター、ローカル変数名、およびプロパティの間のあいまいさを解消する必要がある場合。thisを使用する場合、同じ名前を使用する意味がある唯一の場所であるため、コンストラクターのみになります。

    void SomeMethod(object SomeProperty, object someVar) { this.SomeProperty = SomeProperty; this.someVar = someVar; }

  • 現在のオブジェクトへの参照を別のメソッドに渡す必要があるときはいつでも。オブジェクトを頻繁に渡さなければならないのは、コードの匂いです。

それ以外のものはおそらく冗長すぎるでしょう。必要のないものは使用しないでください。

于 2009-03-16T11:25:38.223 に答える
1

継承されたプロパティに割り当てるときに使用するのが好きです。

于 2009-03-16T11:29:49.353 に答える
0

コンストラクターまたはメソッドのパラメーターが何らかのメンバー変数と衝突する場合にのみ使用します。プロパティでもフィールドでも何でもかまいません。ただし、これは実際にはあまり頻繁には発生しません。なので滅多に使いません。

this.ReSharperは不要なところを削除すると思います。おそらくデフォルトで...ここではそうしますが、それがデフォルトの動作であったかどうかはわかりません:p

于 2009-03-16T11:25:55.027 に答える