OberonCore
https://forum.oberoncore.ru/

Проверка иниц-ии пер-х C# в Visual Studio 2008
https://forum.oberoncore.ru/viewtopic.php?f=27&t=2372
Страница 1 из 1

Автор:  Peter Almazov [ Четверг, 18 Февраль, 2010 08:25 ]
Заголовок сообщения:  Проверка иниц-ии пер-х C# в Visual Studio 2008

Выделено: viewtopic.php?p=43145#p43145

Валерий Лаптев писал(а):
Меня удивляет, почему этого до сих пор не сделали? Это даже не компилятор, это редактор должен следить, БЛИН!!!!!!!!
В Visual Studio 2008 для C# так и сделано (для остальных языков просто не знаю).

Автор:  Валерий Лаптев [ Четверг, 18 Февраль, 2010 08:30 ]
Заголовок сообщения:  Re: Почему программа должна быть структурной

Peter Almazov писал(а):
Валерий Лаптев писал(а):
Меня удивляет, почему этого до сих пор не сделали? Это даже не компилятор, это редактор должен следить, БЛИН!!!!!!!!
В Visual Studio 2008 для C# так и сделано (для остальных языков просто не знаю).

Для Бейсика - все по умолчанию обнуляется. Для С++ - нифига не сделано. Хотя предупреждение компилятор выдает.

Автор:  Сергей Губанов [ Четверг, 18 Февраль, 2010 17:36 ]
Заголовок сообщения:  Re: Почему программа должна быть структурной

Peter Almazov писал(а):
Валерий Лаптев писал(а):
Меня удивляет, почему этого до сих пор не сделали? Это даже не компилятор, это редактор должен следить, БЛИН!!!!!!!!
В Visual Studio 2008 для C# так и сделано (для остальных языков просто не знаю).


Народ, остыньте. Проблема инициализации не в том чтобы отследить факт инициализации, а в том, чтобы она была сделана не более одного раза, а это алгоритмически неразрешимо.

То что сделано в C# есть перестраховка, там из-за этого некоторые переменные приходится не один раз инициализировать (что снижает производительность).

Пример:

Следующий код на C# не скомпилируется:

MyStruct x;
if (!TryInit1(ref x) && !TryInit2(ref x) && !TryInit3(ref x))
{
Init4(ref x);
}

Вместо него придётся написать такой:

MyStruct x;
if (!TryInit1(out x) && !TryInit2(out x) && !TryInit3(out x))
{
Init4(out x);
}

а если переменная объявлена как out то код процедур TryInit1, TryInit2, TryInit3 не скомпилируется пока в ней x не проинициализируют. Таким образом, в C# переменная x будет инициализироваться в этом случае от одного до четырёх раз.

Автор:  Илья Ермаков [ Четверг, 18 Февраль, 2010 18:55 ]
Заголовок сообщения:  Re: Проверка иниц-ии пер-х C# в Visual Studio 2008

Это может хорошо на уровне оборудования решаться, при тегированной памяти. Спец. тег "неопределено" - и всё. Проц реагирует прерыванием.

Автор:  Comdiv [ Четверг, 18 Февраль, 2010 23:34 ]
Заголовок сообщения:  Re: Проверка иниц-ии пер-х C# в Visual Studio 2008

Какие-то излишние сложности с объявлением переменных могут повылезать. Да и хотелось бы не в рантайме такие ошибки ловить.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/