Сообщение Re[11]: C# [Proposal] init block for safe initialization of от 25.12.2025 7:07
Изменено 25.12.2025 10:48 Serginio1
Re[11]: C# [Proposal] init block for safe initialization of
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Serginio1, Вы писали:
S>> Тем, что кой кому не нужен Nullable reference
S>
А вам не приходило в голову задуматься: а почему этому кой-кому не нужен Nullable Reference? Если не приходило — перечитайте стартовый пост, там всё написано.
S>> Но в итоге у него код не пройдет проверку! Так как Next для последнего и Previous для первого будет null!
S>Именно это и прекрасно. Компилятор потребует от него добавить инициализацию для этих свойств, и только тогда успокоится. Это и есть статическая гарантия того, что в рантайме он никогда не напорется ни на Null, ни на EmptyNode.
Антон ты прикалываешься? Еще раз
Только добавив Empty компилятор и успокоится
S>>Никто не мешает добавить свой анализатор без изменения языка!
S>Ок, предположим, у нас есть такой анализатор. Накидайте пример пользовательского кода с его применением.
Ну или
#pragma warning disable продвинутый nullable
#pragma warning restore продвинутый nullable
через наследника DiagnosticAnalyzer
S>Здравствуйте, Serginio1, Вы писали:
S>> Тем, что кой кому не нужен Nullable reference
S>
S>> Но в итоге у него код не пройдет проверку! Так как Next для последнего и Previous для первого будет null!
S>Именно это и прекрасно. Компилятор потребует от него добавить инициализацию для этих свойств, и только тогда успокоится. Это и есть статическая гарантия того, что в рантайме он никогда не напорется ни на Null, ни на EmptyNode.
Антон ты прикалываешься? Еще раз
Так как Next для последнего и Previous для первого будет null
Только добавив Empty компилятор и успокоится
S>>Никто не мешает добавить свой анализатор без изменения языка!
S>Ок, предположим, у нас есть такой анализатор. Накидайте пример пользовательского кода с его применением.
#продвинутый nullable enable
var obj1 = new SomeType1();
var obj2 = new SomeType2();
obj1.Prop = obj2;
obj2.Prop = obj1;
// Local functions are allowed
void Connect() => obj1.Child = obj2;
Connect();
#продвинутый nullable disableНу или
#pragma warning disable продвинутый nullable
#pragma warning restore продвинутый nullable
через наследника DiagnosticAnalyzer
Re[11]: C# [Proposal] init block for safe initialization of
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Serginio1, Вы писали:
S>> Тем, что кой кому не нужен Nullable reference
S>
А вам не приходило в голову задуматься: а почему этому кой-кому не нужен Nullable Reference? Если не приходило — перечитайте стартовый пост, там всё написано.
S>> Но в итоге у него код не пройдет проверку! Так как Next для последнего и Previous для первого будет null!
S>Именно это и прекрасно. Компилятор потребует от него добавить инициализацию для этих свойств, и только тогда успокоится. Это и есть статическая гарантия того, что в рантайме он никогда не напорется ни на Null, ни на EmptyNode.
Антон ты прикалываешься? Еще раз
Только добавив Empty компилятор и успокоится
S>>Никто не мешает добавить свой анализатор без изменения языка!
S>Ок, предположим, у нас есть такой анализатор. Накидайте пример пользовательского кода с его применением.
Ну или
#pragma warning disable продвинутый nullable
#pragma warning restore продвинутый nullable
через наследника DiagnosticAnalyzer
S>Здравствуйте, Serginio1, Вы писали:
S>> Тем, что кой кому не нужен Nullable reference
S>
S>> Но в итоге у него код не пройдет проверку! Так как Next для последнего и Previous для первого будет null!
S>Именно это и прекрасно. Компилятор потребует от него добавить инициализацию для этих свойств, и только тогда успокоится. Это и есть статическая гарантия того, что в рантайме он никогда не напорется ни на Null, ни на EmptyNode.
Антон ты прикалываешься? Еще раз
Так как Next для последнего и Previous для первого будет null
Только добавив Empty компилятор и успокоится
S>>Никто не мешает добавить свой анализатор без изменения языка!
S>Ок, предположим, у нас есть такой анализатор. Накидайте пример пользовательского кода с его применением.
#продвинутый nullable enable
var obj1 = new SomeType1();
var obj2 = new SomeType2();
obj1.Prop = obj2;
obj2.Prop = obj1;
// Local functions are allowed
void Connect() => obj1.Child = obj2;
Connect();
#продвинутый nullable disableНу или
#pragma warning disable продвинутый nullable
#pragma warning restore продвинутый nullable
через наследника DiagnosticAnalyzer