55 lines
2.3 KiB
Plaintext
55 lines
2.3 KiB
Plaintext
![]() |
\b;Инструкция \c;this\n;
|
|||
|
Иногда, методы \l;класса\u cbot\class; должны знать ссылку уже действующего экземпляра. Например, экземпляр, возможно, захочет передать свои ссылки другой функции. Неявное имя ссылки \c;this\n; доступно для методов, а также \c;this\n; это ссылка на текущий экземпляр.
|
|||
|
\c;
|
|||
|
\s;public class MyClass
|
|||
|
\s;{
|
|||
|
\s; int m_int;
|
|||
|
\s; string m_str;
|
|||
|
\s; void MyFunction()
|
|||
|
\s; {
|
|||
|
\s; OtherFunction(this);
|
|||
|
\s; m_int = 2;
|
|||
|
\s; }
|
|||
|
\s;}
|
|||
|
\s;
|
|||
|
\s;void OtherFunction(MyClass obj)
|
|||
|
\s;{
|
|||
|
\s; message(obj.m_str);
|
|||
|
\s;}
|
|||
|
\s;
|
|||
|
\s;extern void object::Test()
|
|||
|
\s;{
|
|||
|
\s; MyClass item();
|
|||
|
\s; item.m_str = "Hello";
|
|||
|
\s; item.MyFunction(); // вывести "Hello"
|
|||
|
\s;}
|
|||
|
\n;
|
|||
|
Вы можете написать \c;this\n; перед методом, но в этом нет необходимости. В приведенном ниже примере мы видим две строго одинаковых строки:
|
|||
|
\c;
|
|||
|
\s; m_int = 2;
|
|||
|
\s; this.m_int = 2; // они идентичны
|
|||
|
\n;
|
|||
|
В методе класса \c;\l;object\u cbot\object;\n;, вы можете использовать \c;this.\n; перед именем поля.
|
|||
|
\c;
|
|||
|
\s;extern void object::Display()
|
|||
|
\s;{
|
|||
|
\s; message(orientation);
|
|||
|
\s; message(this.orientation); // тоже самое, но
|
|||
|
\s; // более четко
|
|||
|
\s;}
|
|||
|
\n;
|
|||
|
Однако, если имя поля неизвестно, то объявление параметра или переменной необходимо использовать вместе с \c;this\n;. В следущем примере имя параметра \c;value\n; такое же, как и имя поля \c;value\n; \l;класса\u cbot\class; \c;MyClass\n;, поэтому мы должны написать \c;this.value\n; для того, чтобы отличить поле от параметра.
|
|||
|
\c;
|
|||
|
\s;public class MyClass
|
|||
|
\s;{
|
|||
|
\s; int value;
|
|||
|
\s; void Put( int value )
|
|||
|
\s; {
|
|||
|
\s; this.value = value;
|
|||
|
\s; }
|
|||
|
\s;}
|
|||
|
\n;
|
|||
|
\t;См. также
|
|||
|
\c;\l;class\u cbot\class;\n;
|
|||
|
\l;Программирование\u cbot;, \l:типы\u cbot\type; и \l;категории\u cbot\category;.
|