Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1090 of 1492 menu
◀ ▶

Вызов this

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

Синтаксис

public Имя() : this(значениеПоУмолчанию) { } public Имя(тип param) { // общая инициализация }

Пример

Давайте направим конструктор без параметров в конструктор с аргументом:

using System; class Line { public string Text; public Line() : this("abcde") { } public Line(string text) { Text = text; } } class Program { static void Main() { var line = new Line(); Console.WriteLine(line.Text); } }

Результат выполнения кода:

"abcde"

Пример

Давайте построим цепочку из трёх конструкторов:

using System; class Triple { public int A; public int B; public int C; public Triple() : this(1) { } public Triple(int a) : this(a, 2) { } public Triple(int a, int b) : this(a, b, 3) { } public Triple(int a, int b, int c) { A = a; B = b; C = c; } } class Program { static void Main() { var triple = new Triple(); Console.WriteLine($"{triple.A} {triple.B} {triple.C}"); } }

Результат выполнения кода:

1 2 3

Пример

Давайте передадим одну константу через this из перегрузки с меньшим числом параметров:

using System; class Code { public string Value; public Code() : this("12345") { } public Code(string value) { Value = value; } } class Program { static void Main() { var fromDefault = new Code(); var fromArg = new Code("abcde"); Console.WriteLine(fromDefault.Value); Console.WriteLine(fromArg.Value); } }

Результат выполнения кода:

"12345" "abcde"

Смотрите также

  • вызов base,
    который делегирует инициализацию базовому классу
  • конструктор,
    к которому сводят общую логику через this
  • первичный конструктор,
    который задаёт параметры в заголовке типа
  • ключевое слово class,
    где объявляют перегруженные конструкторы
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить