何年もの間、私は「これ」がc#.netで何をしているのかを理解しようとしています
例えば
private string personName;
public Person(string name)
{
this.personName = name;
}
public override string ToString()
{
return this.personName;
}
}
this
メソッドが属するオブジェクトを参照します。他の回答で示されているように、スコープの選択に使用できます。現在のオブジェクトをオブジェクト全体 (つまり、特定のフィールドではなく、オブジェクト全体) として使用する場合にも使用できます。例:
public class Person{
private string name;
private Person parent;
public Person(string name,Person parent=null;){
this.name = name;
this.parent = parent;
}
public Person createChild(string name){
return new Person(name,this);
}
}
このthis
キーワードを使用すると、現在のインスタンスのメンバーを明示的に参照できます。
あなたの場合は、簡単にそのままにしておくことができます.C#のルールはメンバー変数を見つけます。
ただし、メンバー変数と同じ名前のパラメーターを使用する場合、または同じ名前のローカルがある場合は、使用する変数をthis
指定します。これにより、次のことが可能になります。
private string personName;
public Person(string personName)
{
// this finds the member
// refers to the argument, since it's in a more local scope
this.personName = personName;
}
StyleCopのようなツールthis
は、あいまいさを完全に取り除くため、あらゆる場所での使用を強制します。現在のインスタンス内でメンバーを設定する (または関数を呼び出すなど) ことを明示的に示しています。
this
クラスのインスタンスを参照してください。普段はノイズになるので使わないのですが、場合によっては大事に使います。
public class Foo
{
private string bar;
public Foo(string bar)
{
//this.bar refer to the private member bar and you assign the parameter bar to it
this.bar = bar;
//Without the this, the bar variable in the inner scope bar, as in the parameter.¸
//in this case you are assigning the bar variable to itself
bar = bar;
}
}