55 lines
1.9 KiB
Plaintext
55 lines
1.9 KiB
Plaintext
\b;Instrukcja \c;this\n;
|
|
Czasami metoda \l;klasy\u cbot\class; potrzebuje wskaźnika do instancji, w której działa. Na przykład instancja może chcieć przekazać wskaźnik do samej siebie jako parametr dla innej funkcji. Odwołanie wprost poprzez \c;this\n; jest dostępne również dla metod; \c;this\n; jest odwołaniem do bieżącej instancji.
|
|
\c;
|
|
\s;public class MojaKlasa
|
|
\s;{
|
|
\s; int m_int;
|
|
\s; string m_str;
|
|
\s; void MojaFunkcja()
|
|
\s; {
|
|
\s; InnaFunkcja(this);
|
|
\s; m_int = 2;
|
|
\s; }
|
|
\s;}
|
|
\s;
|
|
\s;void InnaFunkcja(MojaKlasa obj)
|
|
\s;{
|
|
\s; message(obj.m_str);
|
|
\s;}
|
|
\s;
|
|
\s;extern void object::Test()
|
|
\s;{
|
|
\s; MojaKlasa item();
|
|
\s; item.m_str = "Cześć";
|
|
\s; item.MojaFunkcja(); // wyświetla "Cześć"
|
|
\s;}
|
|
\n;
|
|
Można również umieścić \c;this\n; przed nazwą pola w metodzie, ale nie jest to konieczne. W powyższym przykładzie metody \c;MojaFunkcja()\n; następujące dwie linie mają identyczne znaczenie:
|
|
\c;
|
|
\s; m_int = 2;
|
|
\s; this.m_int = 2; // identyczne
|
|
\n;
|
|
Również w metodzie klasy \c;\l;object\u cbot\object;\n; można użyć \c;this.\n; przed nazwą pola.
|
|
\c;
|
|
\s;extern void object::Display()
|
|
\s;{
|
|
\s; message(orientation);
|
|
\s; message(this.orientation); // to samo ale
|
|
\s; // bardziej jednoznacznie
|
|
\s;}
|
|
\n;
|
|
Jednakże jeśli nazwa pola jest ukryta poprzez deklarację parametru lub zmiennej, należy użyć \c;this\n;. W następującym przykładzie nazwa parametru \c;value\n; jest taka sama jak nazwa pola \c;value\n; w \l;klasie\u cbot\class; \c;MojaKlasa\n;, wobec tego w celu rozróżnienia pola od parametru, konieczne jest napisanie \c;this.value\n;.
|
|
\c;
|
|
\s;public class MojaKlasa
|
|
\s;{
|
|
\s; int value;
|
|
\s; void Put( int value )
|
|
\s; {
|
|
\s; this.value = value;
|
|
\s; }
|
|
\s;}
|
|
\n;
|
|
\t;Zobacz również
|
|
\c;\l;class\u cbot\class;\n;
|
|
\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
|