Информация об изменениях

Сообщение Re: C# [Proposal] init block for safe initialization of comp от 24.12.2025 14:27

Изменено 16.01.2026 21:13 VladD2

Re: C# [Proposal] init block for safe initialization of complex
Здравствуйте, VladD2, Вы писали:

VD>https://github.com/dotnet/csharplang/discussions/9903


init (var obj1 = new SomeType1(), var obj2 = new SomeType2())
{
obj1.Prop = obj2;
obj2.Prop = obj1;
// Local functions are allowed
void Connect() => obj1.Child = obj2;
Connect();
} // Compiler checks here that all non-nullable members are initialized

почему только локальные функции? Как бы чего не вышло? Установка свойства уже может вызывать кучу логики вполне себе внешней.

Да и пока не очень понял, так ли уж оно сильно надо? Например, чем плохо использовать обычные reference types? Или использовать нормальные Optional (которых правда в шарпе нет, но их можно подтянуть извне). Н-р почти во всех языках Next будет Optional/Maybe.
Вообще motivation часть как-то не раскрыта.
Re: C# [Proposal] init block for safe initialization of comp
Здравствуйте, VladD2, Вы писали:

VD>https://github.com/dotnet/csharplang/discussions/9903


init (var obj1 = new SomeType1(), var obj2 = new SomeType2())
{
    obj1.Prop = obj2;
    obj2.Prop = obj1;
    // Local functions are allowed
    void Connect() => obj1.Child = obj2;
    Connect();
} // Compiler checks here that all non-nullable members are initialized

почему только локальные функции? Как бы чего не вышло? Установка свойства уже может вызывать кучу логики вполне себе внешней.

Да и пока не очень понял, так ли уж оно сильно надо? Например, чем плохо использовать обычные reference types? Или использовать нормальные Optional (которых правда в шарпе нет, но их можно подтянуть извне). Н-р почти во всех языках Next будет Optional/Maybe.
Вообще motivation часть как-то не раскрыта.