Не могу разобраться в сути this.
Когда метод вызывается, ему автоматически передается ссылка на вызывающий
объект, т.е. тот объект, для которого вызывается данный метод
class SomeClass
{
private string name = "No name";
private static void WriteToLog(SomeClass aSomeObject)
{
Console.WriteLine("Обрабатывается объект с именем " + aSomeObject.name);
}
public SomeClass(string name)
{
//Хотим присвоить значение аргумента, полю класса
this.name = name;
}
public void DoWork()
{
WriteToLog(this);
}
}
А что передается в WriteToLog(this) при его вызове? Ссылка на что?
т.е. при
SomeClass tmpObj = new SomeClass("Иван");
tmpObj.DoWork();
передается ссылка на объект tmpObj ?
Ответ
MSDN
The this keyword refers to the current instance of the class and is also used as a modifier of the first parameter of an extension method.
Ключевое слово this указывает на текущий экземпляр класса. Также используется в качестве модификатора для первого параметры в методах расширениях
Таким образом внутри определения класса - это ссылка на конкретный объект, для которого выполняется тот или иной метод.
SomeClass tmpObj = new SomeClass("Иван");
tmpObj.DoWork();
this внутри DoWork в данном случае указывается на tmlObj, так как эта функция вызывается у этого объекта.
Комментариев нет:
Отправить комментарий