This (プログラミング)
thisは現在のオブジェクトを指した参照、あるいはポインタであり、たいていの場合は変更不可能である。
オブジェクトが生成すると、thisへの参照はつねに有効なものとなる。これは明示的に参照しなければならない言語もあれば、静的スコープで暗黙のうちに解決している言語もある。ただし、thisを暗黙のうちに解決する言語でも、明示的にthisを必要とする場面(ローカル変数で隠蔽されている同名のメンバー変数を参照する場合や、自身への参照を返り値とする場合など)もある。
thisはメソッドへの引数となっている。例えば、C++で書いた以下のようなメソッドは、
本質的にはC言語での以下のような呼び出しに相当している。
PythonやPerl 5など、言語によってはthisをメソッドへの1つ目の引数として明記する必要がある。この引数の名前をthisやselfとする必然性はなく、他の引数と同様にどんな名前を付けても文法上問題はない。ただし、通常の場合、PythonやPerlでは慣習的にselfが使われる。
GCCなど、一部のC++コンパイラでは、thisを引数に明示することで、その型を別なポインタに変えることができる。
C++やJavaでの静的メソッドはインスタンスに対応せずクラスに所属するものであるため、thisは使えない。Python、Ruby、Smalltalk、Objective-Cなどでは、「クラスオブジェクト」のメソッド(クラスメソッド)となっていて、thisはクラスオブジェクトを指す。
Ruby では self が使われる。
C# では、thisは現在のインスタンスのメンバーを参照するのに用いられる。
特徴的な点として、C#の値型ではメンバー参照に加え、thisを代入式の左辺に置いて自分自身の値を書き換えることができる。 C#7.2で追加されたreadonly構造体では、このthisの書き換えを禁止できる。