![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Что-то подсказывает мне, дело тут в "parent/child scope", по-видимому for открывает child scope уже начиная с объявления переменной цикла...
-------------------- ![]() |
|||
|
||||
| Naum |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
Ессессно. А вы как думали? И вообще я не понимаю о чем вы спорите? Почему-то то, что конструкция вида
не компилится, никого не смущает. А стоило поменять while на for то уже начинаются распри. Это сообщение отредактировал(а) Naum - 18.4.2007, 13:09 -------------------- У нас всего два праздника Новый год и ТЯПница. |
||||
|
|||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
||||
|
||||
| Naum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
sergejzr, скорее всего это сделано для компилятора. И очень полезно для программистов. Очень легко можно запутаться, если в разных скопах будут переменные с одинаковыми именами.
-------------------- У нас всего два праздника Новый год и ТЯПница. |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
С другой стороны я часто пользуюсь переменной i в циклах (думаю не я один). Почему я должен выдумывать для каждого цикла новую переменную, или определять её в начале скопа? И то и другое - неудобно и не нужно.
|
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
||||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
В VC++ нет. Насчёт шарпа не знаю.
|
|||
|
||||
| Naum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
Во-первых, в C# это скомпилируется.
Во-вторых, чем неудобно определять переменную в начале скопа, если она у тебя используется во многих циклах? Добавлено через 2 минуты и 53 секунды И еще... Больше двух последовательных циклов в одном методе не есть гуд. ;) -------------------- У нас всего два праздника Новый год и ТЯПница. |
|||
|
||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
В VC++ 7.1 и новее — скомпилируется.
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| sergejzr |
|
||||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Хотя эта дискуссия для холиваров, но скажу. Такой код неудобно читать. Переменная, от которой ничего не зависит, выносится наверх вместе с "глобальными" этой функции. Просто лишнее отвлечение внимания.
Не есть гуд то кидаться в крайности и ещё не есть гуд впихивать в стандартные шаблоны нестандартные проблемы. Иногда нужно и несколько последовательных из за поставленной задачи, читаемости кода или чего нибудь ещё. |
||||
|
|||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 3 Всего: 154 |
То, что пытаются скомпилить - извращение. -------------------- |
|||
|
||||
| Idsa |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
Хм... мало того, что вот этот код не компилится:
, так и вот это не компилится:
Я совсем запутался |
||||
|
|||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Idsa, это-от понятно. Переменная i определена только в цикле и не определена вне его.
|
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
Это было бы так, если не учитывать предыдущий пример. Получается, что первый кусок кода говорит, что переменная i уже объявлена в данном scope. Тогда мы во втором примере, учитывая это, пытаемся заюзать эту переменную... но нам говорят, что переменной нет в данном scope. |
|||
|
||||
| Naum |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
Читай внимательнее соообщения
Значит, что переменная объявлена не в этом скопе а в дочернем. Что запрещено. Нельзя объявлять переменную с одним и тем же именем в скопах находящихся на одной ветке вложенности. Нельзя и все. Так решили мс. sergejzr, теперь я скажу только за C#. Idsa, я так и не понимаю, если не будешь пользоваться переменной во внешнем скопе, нафига тебе объявлять ее во внешнем скопе. этот код запросто скомпилится в C#. Если же ты будешь использовать переменную во внешнем скопе, то объявление ее во внутреннем скопе может запросто тебя запутать.
Другой программист (да даже и ты дня через два) можешь не заметить, что в цикле ты объявляешь новую переменную (int такое маленькое слово З.Ы. (Опять же только для шарпистов). Подобный топик, ИМХО, похож на вопрос типа: "А почему программисты не используют goto?". Я свое ИМХО высказал. Это сообщение отредактировал(а) Naum - 19.4.2007, 10:15 -------------------- У нас всего два праздника Новый год и ТЯПница. |
||||
|
|||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |