Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 37

Прекратить работу метода, если он вернул False

27.05.2015, 10:21. Показов 2744. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
У меня есть метод который всегда возвращает false.
C#
1
2
3
4
 private bool fail()
        {
            return false;
        }
Я в других методов которые могут возвращать различные типы (int, string, bool и т.д.) обращаться к этому методу fail и если он вернет false(а он всегда будет возвращать false), то прекратить немедленную обработку текущего метода. Как такое осуществить?

Мне нужно что-то типо break, но как это сделать я не знаю. Проще говоря мне при значении false необходимо вернуть null.

Я понимаю что я могу воспользоваться if или swicth-case, но мне кажется это неудобным. Прошу еще раз обратить внимание на то, что все методы обращающиеся fail() имеют разные возвращаемые типы данных.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.05.2015, 10:21
Ответы с готовыми решениями:

Избежать запуска метода по таймеру, если он не завершил работу
Нужно реализовать такую задачу Каждую 5 секунд по Sytem.Timers.Timer вызывается метода скажем GO Так вот, дело в том что процедура...

Как прекратить выполнение асинхронного метода
Есть форма. По событию mouseUp исполняется следующий код: _isDragging = false; if (_isClickOnly) { ...

QUdpSocket bind вернул false
Проблема в следующем. QUdpSocket::bind возвращает false если задать ip + port Если же только порт, то всё работает. Пакеты приходят....

14
 Аватар для kuroiryuu
328 / 312 / 68
Регистрация: 05.11.2009
Сообщений: 712
27.05.2015, 10:40
А можете показать кусочек кода, того что у вас есть?
Так просто наглядней...
А если по сути вопроса, то почему просто не вызывать оператор return там, где вам необходимо прекратить обработку?
например по условию:
C#
1
2
3
4
if (!fail())
{
 return null;
}
0
0 / 0 / 0
Регистрация: 28.02.2015
Сообщений: 14
27.05.2015, 11:53
либо просто обращаться к этому методу когда нужно
C#
1
2
3
4
5
6
7
8
public static void B()
{
if (zn==false) class.fail();
}
public static fail()
{
return null;
}
0
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 37
27.05.2015, 12:06  [ТС]
возможно мое описание наоборот сбило с толку, попытаюсь по другому:
C#
1
2
3
4
private int method1()
        {
            return 0;
        }
в метод method1() я хочу вставить обработку другого метода fail(), который возвращает bool. Если результат fail() будет false, то прекратить дальнейшую отработку текущего метода method1 и вернуть пустое значение.
0
Эксперт .NET
 Аватар для Rius
13092 / 7651 / 1672
Регистрация: 25.05.2015
Сообщений: 23,304
Записей в блоге: 14
27.05.2015, 12:08
blacksm, какое будет пустое значение для int, например?
Лучше опишите, зачем это всё понадобилось.
0
 Аватар для kuroiryuu
328 / 312 / 68
Регистрация: 05.11.2009
Сообщений: 712
27.05.2015, 12:11
Цитата Сообщение от blacksm Посмотреть сообщение
в данных метод я хочу вставить обработку другого метода, который возвращает bool и в случае если значение будет false, то прекратить дальнеюшую отработку текущего метода method1 и вернуть пустое значение.
как я это понял, то вам необходимо что-то в этом духе
C#
1
2
3
4
5
6
7
8
9
10
int? SomeMethod()
{
 .....
 if (!fail())
 {
  return null;
 }
 .....
 return someIntValue;
}
Добавлено через 2 минуты
А уже там где вы будите вызывать этот метод, то необходима проверка
C#
1
2
3
4
5
int? value = SomeMethod();
if (value.HasValue)
{
 // что-то сделать с value.Value
}
1
307 / 284 / 102
Регистрация: 06.05.2014
Сообщений: 861
27.05.2015, 13:22
Цитата Сообщение от blacksm Посмотреть сообщение
Если результат fail() будет false, то прекратить дальнейшую отработку текущего метода method1 и вернуть пустое значение.
Если он всегда возвращает ложь, то какой смысл вообще проверять - возвращай сразу пустое значение!
Вопрос попахивает не пониманием автора исходного задания - можно его увидеть?
0
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 37
27.05.2015, 13:42  [ТС]
Цитата Сообщение от BozKurt Посмотреть сообщение
Если он всегда возвращает ложь, то какой смысл вообще проверять - возвращай сразу пустое значение!
Вопрос попахивает не пониманием автора исходного задания - можно его увидеть?
кода нет: весь код выдуман на ходу и написан в текущем топике. Да у меня есть определенная задача, она слегка обширна и я не хотел форумчан ею загружать и упростил до двух методов, а в частности (еще раз специально напишу):
есть методы (int method1, string method 2, bool method 3). В них по желанию (например в 1-4 методах) я хотел бы вызывать специальный метод bool fail(), который бы в независимости от того что делается в методах заставлял бы их возвращать null (пустой результат). Вся проблема в том, что я не знаю каким образом возвратить пустой int (null) или пустой bool.
0
Эксперт .NET
 Аватар для Rius
13092 / 7651 / 1672
Регистрация: 25.05.2015
Сообщений: 23,304
Записей в блоге: 14
27.05.2015, 13:46
Почему не сделать как в Qt?
C#
1
2
3
4
5
6
7
8
9
10
11
int method1(out bool ok)
{
  ok= false;
 
  if (fail()) {
    return default(int);
  }
 
  ok = true;
  return 1;
}
0
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 37
27.05.2015, 13:53  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
Почему не сделать как в Qt?
а что такое в данном случае
C#
1
return default(int);
?

Что вернет?
0
Эксперт .NET
 Аватар для Rius
13092 / 7651 / 1672
Регистрация: 25.05.2015
Сообщений: 23,304
Записей в блоге: 14
27.05.2015, 13:54
Бессмысленное значение, которое надо игнорировать, при вернувшемся ok == false.
0
307 / 284 / 102
Регистрация: 06.05.2014
Сообщений: 861
27.05.2015, 14:22
Цитата Сообщение от blacksm Посмотреть сообщение
я хотел бы вызывать специальный метод bool fail(), который бы в независимости от того что делается в методах заставлял бы их возвращать null (пустой результат)
Так вот я и спрашиваю - зачем вообще нужен какой-то метод, если ты при любом раскладе возвращаешь пустое значение!?

Цитата Сообщение от Rius Посмотреть сообщение
Бессмысленное значение
Если интерпретировать ноль как бессмысленное - то да, но в общем то это тоже число и 0≠null.
0
Эксперт .NET
 Аватар для Rius
13092 / 7651 / 1672
Регистрация: 25.05.2015
Сообщений: 23,304
Записей в блоге: 14
27.05.2015, 14:26
В том смысле бессмысленное, что его значение не имеет значения. При ok == false возвращаемый результат просто игнорируется, а вернуть что-то надо. Хотя можно и ?? .
blacksm, покажите код, в котором эта муть используется?
0
307 / 284 / 102
Регистрация: 06.05.2014
Сообщений: 861
27.05.2015, 14:30
Цитата Сообщение от Rius Посмотреть сообщение
что его значение не имеет значения
Почему не имеет? Как раз таки имеет, для ссылочных типов - null, для значимых - зависит от того числовой это тип или структура; для числовых значение по умолчанию равно нулю.
https://msdn.microsoft.com/ru-... h0h0d.aspx
P.S. А вот увидеть то, где "это" используется, я бы тоже не прочь.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
27.05.2015, 14:32
Мне кажется, автор пытается реализовать свой похапэшный die.

Здесь лучше воспользоваться исключениями:
C#
1
2
3
4
void Fail()
{
   throw new ApplicationException("/facepalm");
}
И использовать его в методах:
C#
1
2
3
4
5
6
7
8
9
10
11
12
int Method1()
{
   if (notHappy)
      Fail();
   else
      Win();
}
 
bool IDontGiveAShit()
{
   Fail();
}
И окружать вызовы этих методов try/catch:
C#
1
2
try { int x = method1(); }
catch { Show("FAIL!"); }
Если каждый вызов не хочется оборачивать, а просто получать дефолтный результат, то вызов этих методов можно обернуть:
C#
1
2
3
4
5
6
7
8
9
T DoOrDieTrying<T>(Func<T> f)
{
   try { return f(); }
   catch
   {
      Log("FAIL!");
      return default(T);
   }
}
И потом использовать так:
C#
1
int x = DoOrDieTrying(method1);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.05.2015, 14:32
Помогаю со студенческими работами здесь

Как прекратить работу программы?
# include &lt;iostream&gt; # include &lt;locale&gt; using namespace std; int main () { setlocale (LC_ALL,&quot;Russian&quot;); int number; ...

Как прекратить работу макроса?
Кроме goto к метке в конце программы

Если JSON ничего не вернул?
Происходит ошибка , если json ничего не возвращает как сделать проверку или что лучше? $.ajax({ dataType:...

Прекратить работу калькулятора при вводе любого символа, кроме числа
Здравствуйте, я все с тем же калькулятором.решил сделать проверку на вводимые данные, т.е. что бы работа программы прекращалась при вводе...

Если сервер вернул ошибку 404
Добрый день. Хотел бы поинтересоваться, как в Java проверить каков был получен ответ от веб-сервера? Нужно сделать, чтобы скрипт проверял...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru