Вызов перегружаемого конструктора с помощью ключевого слова this

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

имя_конструктора(список_параметров1):this(список_параметров2){

//... Тело конструктора, которое может быть пустым.

}

//продемонстрировать вызов контруктора с помощью ключевого слова this

using System;

class XYCoord

{

public int x, y;

public XYCoord()

: this(0, 0)

{

Console.WriteLine("В контрукторе XYCoord()");

}

public XYCoord(XYCoord obj)

: this(obj.x, obj.y)

{

Console.WriteLine("В конструкторе XYCoord(obj)");

}

public XYCoord(int i, int j)

{

Console.WriteLine("В конструкторе XYCoord(int, int)");

x = i;

y = j;

}

}

class OverloadConsDemo

{

static void Main()

{

XYCoord t1 = new XYCoord();

XYCoord t2 = new XYCoord(8, 9);

XYCoord t3 = new XYCoord(t2);

Console.WriteLine("t1.x, t1.y: " + t1.x + ", " + t1.y);

Console.WriteLine("t2.x, t2.y: " + t2.x + ", " + t2.y);

Console.WriteLine("t3.x, t3.y: " + t3.x + ", " + t3.y);

}

}

Инициализаторы объектов

Инициализаторы объектовпредоставляют еще один способ создания объекта и инициализации его полей и свойств. (Подробнее о свойствах речь пойдет в главе 10.) Если используются инициализаторы объектов, то вместо обычного вызова конструктора класса указываются имена полей или свойств, инициализируемых первоначально задаваемым значением.

//простой пример, демонтрирующий применение инициализаторов обьектов

using System;

class MyClass

{

public int Count;

public string Str;

}

class ObjInitDemo

{

static void Main()

{

//сконтруировать обьект типа MyClass, используя инициализаторы обьектов

MyClass obj = new MyClass { Count = 100, Str = "Тестирование" };

Console.WriteLine(obj.Count + " " + obj.Str);

}

}

Ниже приведена общая форма синтаксиса инициализации объектов:

new имя_класса {имя= выражение, имя= выражение,...}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: