Использование this при выгрузке перегружаемого конструктора - C#
Формулировка задачи:
Я немного не понял использование this при выгрузке перегружаемого конструктора.
В книжке дан вот такой пример:
Выполнение этого кода приводит к следующему результату.
В конструкторе XYCoord(int, int)
В конструкторе XYCoord()
В конструкторе XYCoord(int, int)
В конструкторе XYCoord(int, int)
В конструкторе XYCoord(obj)
tl.x, tl.y: 0, О
t2.x, t2.y: 8, 9
t3.x, t3.y: 8, 9
Если this искусственно вызывает альтернативный конструктор, то почему происходит потом вызов изначального конструктора?
using System;
class XYCoord {
public int x, y;
public XYCoord() : this@, 0) {
Console.WriteLine("В конструкторе XYCoord()");
}
public XYCoord(XYCoord obj) : this(obj.x, obj.y) {
Console.WriteLine("В конструкторе XYCoord(obj)");
} i
public XYCoord(int i, int j) {
Console.WriteLine("В конструкторе XYCoord(int, int)");
x = i;
У = j;
}
}
class OverloadConsDemo {
static void Main() {
XYCoord tl = new XYCoord();
XYCoord t2 = new XYCoord(8, 9);
XYCoord t3 = new XYCoord(t2);
Console.WriteLine("tl.x, tl.y " + tl.x + ", " + tl.y);
Console.WriteLine("t2.x, t2.y " + t2.x + ", " + t2.y);
Console.WriteLine("t3.x, t3.y " + t3.x + ", " + t3.y);
}
}Решение задачи: «Использование this при выгрузке перегружаемого конструктора»
textual
Листинг программы
public XYCoord() {
this(0, 0);
Console.WriteLine("В конструкторе XYCoord()");
}