this
C#メソッド内での代入の有用な例はありますか? 就職の面接で一度聞かれたことがありますが、今でも自分で答えたいと思っています。
6 に答える
「これ」に割り当てることができないと言うとき、他の答えは正しくありません。確かに、クラス型にはできませんが、構造体型にはできます。
public struct MyValueType
{
public int Id;
public void Swap(ref MyValueType other)
{
MyValueType temp = this;
this = other;
other = temp;
}
}
構造体はいつでも、このように「this」に代入することで自身を変更できます。
thisキーワードを使用すると、現在の型でスコープが設定された変数とメソッドのみがアクセスされるようになります。これは、フィールド/プロパティとローカル変数またはメソッド パラメーターの間に名前の競合がある場合に使用できます。
通常、コンストラクターで使用されます。
private readonly IProvider provider;
public MyClass(IProvider provider)
{
this.provider = provider;
}
この例では、パラメーター プロバイダーをプライベート フィールド プロバイダーに割り当てます。
メソッドの最初のパラメーターを foo(ftype this, ...) として指定する場合、構文の観点からこれの唯一の正しい場所は、C# 3.0 の拡張メソッドです。そして、この拡張機能を ftype の任意のインスタンスに使用できます。しかし、これは単なる構文であり、実際のこの ovveride 操作ではありません。
thisに何かを割り当てるように求められた場合、かなりの数の例があります。頭に浮かぶのは、コントロールに彼のパパが誰であるかを伝えることです。
class frmMain
{
void InitializeComponents()
{
btnOK = new Button();
btnOK.Parent = this;
}
}
「これ」を上書きすることはできません。現在のオブジェクト インスタンスを指します。