Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Terrarium
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 18
1

Аналог GOTO

29.07.2015, 15:13. Просмотров 1766. Ответов 7
Метки нет (Все метки)

Добрый день!
Сразу прошу прощения, что вопрос будет без примера кода, - доступ к студии в данный момент отсутствует.
В свете того, что я начитался кучи информации о С#, встретил много упоминаний об операторе GOTO - большинство людей, я так понял, чуть ли не ненавидит тех, кто его использует. Хотя непонятно почему...
Хочу его применить, потому что как сделать по-другому не знаю. В заданный момент времени программа должна начать выполняться, до этого с момента запуска она проверяет, наступило ли это время:

C#
1
2
3
4
5
6
U: if (ВремяСейчас>=ЗаданноеВремя)
{
Выполняется код
}
else
{GOTO U}
Будет ли это здесь оправдано или есть лучший аналог GOTO?
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2015, 15:13
Ответы с готовыми решениями:

Замена goto
Можно ли чем заменить goto в данном случае? static void Main() { start:...

Использование goto
if (choice == "3") { perehod3:; ...

Использование goto в C#
goto противоречит принципам структурированного программирования

Оператор goto
Как передать управление из одного класса в другой c помощью goto(или как то по другому)?

7
insite2012
Модератор
Эксперт .NET
5016 / 3935 / 1133
Регистрация: 12.10.2013
Сообщений: 11,467
Записей в блоге: 2
29.07.2015, 15:19 2
Цитата Сообщение от Terrarium Посмотреть сообщение
большинство людей, я так понял, чуть ли не ненавидит тех, кто его использует.
Ну почему... Каждому свое.
Цитата Сообщение от Terrarium Посмотреть сообщение
Хотя непонятно почему...
Тут как раз все понятно. Код получается трудночитаемым.
Цитата Сообщение от Terrarium Посмотреть сообщение
есть лучший аналог GOTO?
Не совсем понял что вы хотите сделать, но уверен что можно обойтись и без этого оператора.
0
Terrarium
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 18
29.07.2015, 15:31  [ТС] 3
Цитата Сообщение от insite2012 Посмотреть сообщение
Не совсем понял что вы хотите сделать, но уверен что можно обойтись и без этого оператора.
Я хочу спарсить html на определенный момент времени. До этого момента страница не обновлена и информация с нее не нужна.
Поэтому код должен начать выполняться в этот момент времени, причем программа может быть запущена за час, за два до обновления страницы.
0
Storm23
Эксперт .NETАвтор FAQ
9390 / 4592 / 1657
Регистрация: 11.01.2015
Сообщений: 5,793
Записей в блоге: 34
29.07.2015, 15:34 4
Terrarium,
C#
1
2
3
4
5
6
U: if (ВремяСейчас>=ЗаданноеВремя)
{
Выполняется код
}
else
{GOTO U}
Эквивалентно
C#
1
2
3
4
while(ВремяСейчас < ЗаданноеВремя)
{
}
 Выполняется код
Т.о. goto здесь не нужен.
0
tvv1
77 / 70 / 25
Регистрация: 26.10.2010
Сообщений: 231
Завершенные тесты: 4
29.07.2015, 15:34 5
Цитата Сообщение от Terrarium Посмотреть сообщение
В заданный момент времени программа должна начать выполняться, до этого с момента запуска она проверяет, наступило ли это время:
если саму программу что то запускает, то на старте запускаемой программы проверять текущее время с шаблонным и в случае чего просто выходить из приложения.

Но если реализовать то, что написано в самом коде - это тема таймеров.
0
Даценд
Модератор
Эксперт .NET
5342 / 4501 / 2883
Регистрация: 20.04.2015
Сообщений: 8,148
29.07.2015, 15:37 6
Лучший ответ Сообщение было отмечено Terrarium как решение

Решение

Terrarium,
Ну а чем это будет отличаться от цикла while
C#
1
2
3
4
5
6
7
8
9
bool updated=false;
while (!updated)
{
   if (ВремяСейчас>=ЗаданноеВремя)
   {
      Выполняется код
      updated=true;
   }
}
1
Terrarium
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 18
29.07.2015, 15:57  [ТС] 7
Цитата Сообщение от Даценд Посмотреть сообщение
Ну а чем это будет отличаться от цикла while
Да, то же самое
То есть цикл будет выполняться до тех пор, пока не будет осуществлен вход в тело цикла - это то, что надо.
Просто с GOTO для меня как-то логичнее, что ли...
Вечером попробую оба варианта, интересно)
Всем спасибо!
0
Zhavoronkov5
49 / 45 / 23
Регистрация: 27.07.2015
Сообщений: 111
29.07.2015, 22:30 8
Никто goto не ненавидит. Просто он характерен для ассемблера (где без него никуда) и подразумевает, что микроконтроллер достаточно прост, программист его хорошо знает и пишет процентов 80 кода сам. В с# процентов 80 кода пишется за вас еще при создании проекта. Во главу угла ставится модульность, а goto - ее прямая противоположность.

Так что ваш код с goto просто неуместен, как рабочая спецовка на свадьбе. Придти можно, но стиль очень плохой, рано или поздно снимешь.
0
29.07.2015, 22:30
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2015, 22:30

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Альтернатива goto
Всем привет.Второй день думаю как разрешить эту ситуацию и что-то нету продвижения(.Как надо...

Альтернатива goto
Здравствуйте, объясните пожалуйста, чем можно заменить goto в данном случае (приведу в пример,...

Использование goto
Ребята, нужно выйти из вложенного условного оператора switch, решил использовать goto. Но он...

Замена оператора goto
Здравствуйте. Подскажите, пожалуйста, как в представленном коде правильно избавиться от оператора...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.