Первичный конструктор
Параметры в круглых скобках после имени class
или record
образуют первичный конструктор: аргументы доступны
во всём теле типа как обычные параметры. Для
class
часто сохраняют их в поля или свойства; у
record позиционные параметры автоматически
становятся свойствами записи.
Синтаксис
class Имя(тип param1, тип param2)
{
// param1 и param2 доступны здесь
}
record Row(string Text, int Num);
Пример
Давайте объявим класс с первичным конструктором и свойствами:
using System;
class TagPair(string left, string right)
{
public string Left { get; } = left;
public string Right { get; } = right;
}
class Program
{
static void Main()
{
var pair = new TagPair("ab", "cde");
Console.WriteLine($"{pair.Left} {pair.Right}");
}
}
Результат выполнения кода:
"ab cde"
Пример
Давайте создадим record с позиционными
параметрами:
using System;
record CodeRow(string Text, int Num);
class Program
{
static void Main()
{
var row = new CodeRow("abcde", 5);
Console.WriteLine($"{row.Text} {row.Num}");
}
}
Результат выполнения кода:
abcde 5
Пример
Давайте используем параметр первичного конструктора в методе экземпляра:
using System;
class Prefix(string head)
{
public string Build(string tail)
{
return head + tail;
}
}
class Program
{
static void Main()
{
var prefix = new Prefix("12");
Console.WriteLine(prefix.Build("345"));
}
}
Результат выполнения кода:
"12345"
Смотрите также
-
конструктор,
который инициализирует экземпляр в теле класса -
ключевое слово
record,
где позиционный синтаксис часто сочетают с первичным конструктором -
цепочка this,
которая дополняет обычные конструкторы в том же типе -
тип
string,
который часто передают в параметры конструктора