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

Сообщение Re[6]: Тонкости инициализации от 26.01.2022 20:46

Изменено 26.01.2022 20:54 Mystic Artifact

Re[6]: Тонкости инициализации
Здравствуйте, Sinclair, Вы писали:

Вот вам идея на двоих: нормальный код должен работать в "SkipLocalsInit", когда вот эти переменные на стэке физически не инициализируются, прям как в старые добрые времена.

Поэтому, мне неясно что там курит стандарт на самом деле.

На практике, это выглядит как:

[c#]_ = TryGetValue(out var x);
return x == 0; // привет, не проверили результат /c#]

Это особенно важно работая с нативным кодом, который не имеет привычки писать в выход, если нечего выводить. А соответственно, мы и не должны это читать.

В общем, теперь такое доступно в C# официально. И более того — любой уважающий себя человек (разрабатывающий библиотеку) — просто обязан это использовать (если крохи перфоманса — фактор). Это вроде крохи, но на stackalloc они совсем не крохи. Впрочем и выделять буфера стоит неинициализированными. ОС и так старается чистить нулями страницу, отдавая ее в пользование, а дальше простите, думайте сами (и дотнет по прежнему сугубо нелогичен в этом — BufferWriter идет на помойку первым же, именно поэтому, хотя это единственный его недостаток).
Re[6]: Тонкости инициализации
Здравствуйте, Sinclair, Вы писали:

Вот вам идея на двоих: нормальный код должен работать в "SkipLocalsInit", когда вот эти переменные на стэке физически не инициализируются, прям как в старые добрые времена.

Поэтому, мне неясно что там курит стандарт на самом деле.

На практике, это выглядит как:

_ = TryGetValue(out var x);
return x == 0; // привет, не проверили результат


Это особенно важно работая с нативным кодом, который не имеет привычки писать в выход, если нечего выводить. А соответственно, мы и не должны это читать.

В общем, теперь такое доступно в C# официально. И более того — любой уважающий себя человек (разрабатывающий библиотеку) — просто обязан это использовать (если крохи перфоманса — фактор). Это вроде крохи, но на stackalloc они совсем не крохи. Впрочем и выделять буфера стоит неинициализированными. ОС и так старается чистить нулями страницу, отдавая ее в пользование, а дальше простите, думайте сами (и дотнет по прежнему сугубо нелогичен в этом — BufferWriter идет на помойку первым же, именно поэтому, хотя это единственный его недостаток).