55 lines
1.8 KiB
Plaintext
55 lines
1.8 KiB
Plaintext
![]() |
\b;Instrukcja \c;this\n;
|
|||
|
Czasami metoda \l;klasy\u cbot\class; potrzebuje wska<6B>nika do instancji, w kt<6B>rej dzia<69>a. Na przyk<79>ad instancja mo<6D>e chcie<69> przekaza<7A> wska<6B>nik do samej siebie jako parametr dla innej funkcji. Odwo<77>anie wprost poprzez \c;this\n; jest dost<73>pne r<>wnie<69> dla metod; \c;this\n; jest odwo<77>aniem do bie<69><65>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<7A><65>";
|
|||
|
\s; item.MojaFunkcja(); // wy<77>wietla "Cze<7A><65>"
|
|||
|
\s;}
|
|||
|
\n;
|
|||
|
Mo<EFBFBD>na r<>wnie<69> umie<69>ci<63> \c;this\n; przed nazw<7A> pola w metodzie, ale nie jest to konieczne. W powy<77>szym przyk<79>adzie metody \c;MojaFunkcja()\n; nast<73>puj<75>ce dwie linie maj<61> identyczne znaczenie:
|
|||
|
\c;
|
|||
|
\s; m_int = 2;
|
|||
|
\s; this.m_int = 2; // identyczne
|
|||
|
\n;
|
|||
|
R<EFBFBD>wnie<EFBFBD> w metodzie klasy \c;\l;object\u cbot\object;\n; mo<6D>na u<>y<EFBFBD> \c;this.\n; przed nazw<7A> pola.
|
|||
|
\c;
|
|||
|
\s;extern void object::Display()
|
|||
|
\s;{
|
|||
|
\s; message(orientation);
|
|||
|
\s; message(this.orientation); // to samo ale
|
|||
|
\s; // bardziej jednoznacznie
|
|||
|
\s;}
|
|||
|
\n;
|
|||
|
Jednak<EFBFBD>e je<6A>li nazwa pola jest ukryta poprzez deklaracj<63> parametru lub zmiennej, nale<6C>y u<>y<EFBFBD> \c;this\n;. W nast<73>puj<75>cym przyk<79>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<7A><72>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<69>
|
|||
|
\c;\l;class\u cbot\class;\n;
|
|||
|
\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
|