Почему конструктор по умолчанию в новой записи Struct Dellault по умолчанию (запись)? ⇐ C#

Место общения программистов C#
Anonymous
Почему конструктор по умолчанию в новой записи Struct Dellault по умолчанию (запись)?

Сообщение Anonymous »

Если у меня есть запись, определенная как: < /p>

Код: Выделить всё

    public record struct MyRecord(string Whatever = "anything"){
public DateTime  Start {get; init;} = DateTime.UtcNow;
public DateTime? End   {get; init;}
}
, а затем в моем коде запустите новый myrecord () , фактический код, сгенерированный для этого по умолчанию (myrecord) .
Если я предоставляю значение для любого из значений первичного конструктора (т.е. в парантеесах). Дело это приводит к тому, что начальное значение всегда будет 0 тика (т.е. 01/01/0001 00:00:00).
sharplabs
Почему он это делает?

Код: Выделить всё

    [method:System.Runtime.CompilerServices.OverloadResolutionPriority(1)]
public record struct MyRecord(string Whatever = "anything"){
public DateTime  Start {get; init;} = DateTime.UtcNow;
public DateTime? End   {get; init;}
}
с этим новым myrecord () правильно использует определенный конструктор.

Подробнее здесь: https://stackoverflow.com/questions/749 ... aultrecord

Вернуться в «C#»