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/ |