私はそれが正しく得られているかどうかを知りたいと思います。このキーワードを使っても、フィールドと変数を区別できますか?このよう :メソッドのパラメータ(またはローカル変数)は、フィールドと同じ名前を持つ場合"this"というキーワードを正しく使用していますか?
class X
{
int x;
public X(int x)
{
this.x=x;
}
}
私はそれが正しく得られているかどうかを知りたいと思います。このキーワードを使っても、フィールドと変数を区別できますか?このよう :メソッドのパラメータ(またはローカル変数)は、フィールドと同じ名前を持つ場合"this"というキーワードを正しく使用していますか?
class X
{
int x;
public X(int x)
{
this.x=x;
}
}
はい、あなたは必要は2を区別するためにthis
を使用します。また、StyleCopは、すべてのクラスメンバーのアクセスについては、this
で行われていますが、それは良いアイデアかどうかは議論の余地があるかもしれません。物事をより明確にするだけでなく、多くの視覚的混乱を招く。
これは「シャドーイング」として知られており、これについてはボーカルのStyleCopだけではありません.D(http://leepoint.net/notes-java/data/variables/60shadow-variables.html) –
@Hypnos:StyleCopは* 'this'または 'base'を除いたすべてのクラスメンバーの使用。ローカル変数がそれをシャドウするものだけではありません。プロパティとコンストラクタの引数のためのフィールドをバッキングするには、大体はOKだと思いますが、通常はローカル変数にクラスのメンバーをシャドーするのは慣れていません。 – Joey
私はこの時点で少し古いかもしれませんが、クラスや構造体のフィールドには常に 'm'プリフィックスを使用する必要があります。 –