Простой вопрос об «этом» утверждении в C# - PullRequest
1 голос
/ 06 марта 2020
class first
{
    internal string log = "";

    public bool something(second obj)
    {
        if (obj.check(this) == true)
          return true;          
        else
            return false;
    }
}

class second
{
    public bool check(first obj)
    {
        if (obj.log == "yes")
            return true;
        else
            return false;
    }
}

Итак, в этом коде, который вы видите выше, есть утверждение obj.check(this), что мне интересно, это то, на что ссылается this? Я только начал программировать, и мой профессор действительно не увлекался этим.

Ответы [ 4 ]

2 голосов
/ 06 марта 2020

this - указатель на «текущий» объект, к которому вызывается метод.

1 голос
/ 06 марта 2020

В C# вы работаете с объектами, которые являются экземплярами определенного c класса. Вы можете рассматривать класс как план чего-то. Например, план, как построить автомобиль, но это не автомобиль. Объект является экземпляром этого чертежа, поэтому, например, каждый автомобиль является объектом класса Car.

. Когда вы используете this, вы ссылаетесь на объект, который используете в данный момент. Например, когда вы находитесь с вашим другом в лобби, и вас спрашивают, кто регистрируется на событие. Вы можете ответить me и все знают, кто регистрируется. В этом случае me равно this и сообщает, к кому оно относится.

1 голос
/ 06 марта 2020

Из Документация MSDN:

Это ключевое слово относится к текущему экземпляру класса.

В вашем случае это относится к текущий экземпляр класса, где вы проверяете экземпляр текущего класса (т.е. экземпляр класса first), содержит значение журнала как «да» или нет.

0 голосов
/ 06 марта 2020

Указатель this представляет текущий экземпляр класса или структуры.

Таким образом, функция в классе first что-то такая же, как показано ниже.

public bool something(second obj)
{
    if (log == "yes")
        return true;          
    else
        return false;
}
...