2011-01-08 11 views
1

私はそれが正しく得られているかどうかを知りたいと思います。このキーワードを使っても、フィールドと変数を区別できますか?このよう :メソッドのパラメータ(またはローカル変数)は、フィールドと同じ名前を持つ場合"this"というキーワードを正しく使用していますか?

class X 
{ 
    int x; 
    public X(int x) 
    { 
    this.x=x; 
    } 
} 
+0

私はこの時点で少し古いかもしれませんが、クラスや構造体のフィールドには常に 'm'プリフィックスを使用する必要があります。 –

答えて

9

はい、あなたは必要は2を区別するためにthisを使用します。また、StyleCopは、すべてのクラスメンバーのアクセスについては、thisで行われていますが、それは良いアイデアかどうかは議論の余地があるかもしれません。物事をより明確にするだけでなく、多くの視覚的混乱を招く。

+2

これは「シャドーイング」として知られており、これについてはボーカルのStyleCopだけではありません.D(http://leepoint.net/notes-java/data/variables/60shadow-variables.html) –

+0

@Hypnos:StyleCopは* 'this'または 'base'を除いたすべてのクラスメンバーの使用。ローカル変数がそれをシャドウするものだけではありません。プロパティとコンストラクタの引数のためのフィールドをバッキングするには、大体はOKだと思いますが、通常はローカル変数にクラスのメンバーをシャドーするのは慣れていません。 – Joey

関連する問題