検索に移動thisは、プログラミング言語に出てくる概念のひとつで、自身の動いているオブジェクトを指す予約語。インスタンスメソッド内で使用される。thisの他にself、Meといった語を使う言語もあるが、言語を問わず概念は共通しているので、以下ではthisで代表させて記述することとする。外部リンク概要[編集]thisは現在のオブジェクトを指した参照、あるいはポインタであり、たいていの場合は変更不可能である。オブジェクトが生成すると、thisへの参照はつねに有効なものとなる。これは明示的に参照しなければならない言語もあれば、静的スコープで暗黙のうちに解決している言語もある。thisを暗黙のうちに解決する言語でも、明示的にthisを必要とする場面(ローカル変数で隠蔽されている同名のメンバー変数を参照する場合や、自身への参照を返り値とする場合など)もある。thisはメソッドへの引数となっている。x)本質的にはC言語での以下のような呼び出しに相当している。5など、言語によってはthisをメソッドへの1つ目の引数として明記する必要がある。この引数の名前をthisやselfとする必然性はなく、他の引数と同様にどんな名前を付けても文法上問題はない。通常の場合、PythonやPerlでは慣習的にselfが使われる。GCCなど、一部のC++コンパイラでは、thisを引数に明示することで、その型を別なポインタに変えることができる[1]。C++やJavaでの静的メソッドはインスタンスに対応せずクラスに所属するものであるため、thisは使えない。Python、Ruby、Smalltalk、Objective-Cなどでは、「クラスオブジェクト」のメソッド(クラスメソッド)となっていて、thisはクラスオブジェクトを指す。thisを変更でき、メソッド内から動作するオブジェクトを切り替えることができたが、のちに不可能となり、thisは右辺値となっている[2]。参照がなかったが、もし最初から参照があったとしたら、thisはポインタではなく参照となっていたであろう[3]。thisとすることで、オブジェクトが自ら消えることができる。thisは現在のインスタンスのメンバーを参照するのに用いられる。特徴的な点として、C#の値型ではメンバー参照に加え、thisを代入式の左辺に置いて自分自身の値を書き換えることができる。C#7.2で追加されたreadonly構造体では、このthisの書き換えを禁止できる。readonly構造体ではこの書き換えはできない。多重ディスパッチが行われ、thisという概念がないが、メッセージをあるオブジェクトに送るという意識は文法に残っている。下に示した2つの記法は糖衣構文であり、同等に動作する。thisは現在のインスタンスを指すキーワードであり、クラスの値やメソッドを参照するのに用いられる。関数はオブジェクトに属している(メソッドである)ことも、属さないでいる(ただの関数である)こともできる。したがって、thisが何を指しているかは、関数の呼び出し方によって異なっている。同じように使うことができる。};object.notify();のように関数(object.notify)をメソッドとして呼び出した場合、thisはobjectを指す。新しく生成されるオブジェクトを指す[4]。関数を単独で呼び出す場合は、thisはstrict-mode中であればundefinedであり、そうでなければグローバルオブジェクトを指すが、thisが何を指すかを個別に指定して呼び出すこともできる。