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

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте.
У меня есть метод который всегда возвращает 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2015, 10:21
Ответы с готовыми решениями:

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

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

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

Как прекратить работу программы?
# include <iostream> # include <locale> using namespace std; int main () { setlocale...

14
328 / 312 / 68
Регистрация: 05.11.2009
Сообщений: 712
27.05.2015, 10:40 2
А можете показать кусочек кода, того что у вас есть?
Так просто наглядней...
А если по сути вопроса, то почему просто не вызывать оператор return там, где вам необходимо прекратить обработку?
например по условию:
C#
1
2
3
4
if (!fail())
{
 return null;
}
0
0 / 0 / 0
Регистрация: 28.02.2015
Сообщений: 14
27.05.2015, 11:53 3
либо просто обращаться к этому методу когда нужно
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  [ТС] 4
возможно мое описание наоборот сбило с толку, попытаюсь по другому:
C#
1
2
3
4
private int method1()
        {
            return 0;
        }
в метод method1() я хочу вставить обработку другого метода fail(), который возвращает bool. Если результат fail() будет false, то прекратить дальнейшую отработку текущего метода method1 и вернуть пустое значение.
0
Эксперт .NET
10566 / 6490 / 1506
Регистрация: 25.05.2015
Сообщений: 19,661
Записей в блоге: 14
27.05.2015, 12:08 5
blacksm, какое будет пустое значение для int, например?
Лучше опишите, зачем это всё понадобилось.
0
328 / 312 / 68
Регистрация: 05.11.2009
Сообщений: 712
27.05.2015, 12:11 6
Цитата Сообщение от 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 7
Цитата Сообщение от blacksm Посмотреть сообщение
Если результат fail() будет false, то прекратить дальнейшую отработку текущего метода method1 и вернуть пустое значение.
Если он всегда возвращает ложь, то какой смысл вообще проверять - возвращай сразу пустое значение!
Вопрос попахивает не пониманием автора исходного задания - можно его увидеть?
0
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 37
27.05.2015, 13:42  [ТС] 8
Цитата Сообщение от BozKurt Посмотреть сообщение
Если он всегда возвращает ложь, то какой смысл вообще проверять - возвращай сразу пустое значение!
Вопрос попахивает не пониманием автора исходного задания - можно его увидеть?
кода нет: весь код выдуман на ходу и написан в текущем топике. Да у меня есть определенная задача, она слегка обширна и я не хотел форумчан ею загружать и упростил до двух методов, а в частности (еще раз специально напишу):
есть методы (int method1, string method 2, bool method 3). В них по желанию (например в 1-4 методах) я хотел бы вызывать специальный метод bool fail(), который бы в независимости от того что делается в методах заставлял бы их возвращать null (пустой результат). Вся проблема в том, что я не знаю каким образом возвратить пустой int (null) или пустой bool.
0
Эксперт .NET
10566 / 6490 / 1506
Регистрация: 25.05.2015
Сообщений: 19,661
Записей в блоге: 14
27.05.2015, 13:46 9
Почему не сделать как в 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  [ТС] 10
Цитата Сообщение от Rius Посмотреть сообщение
Почему не сделать как в Qt?
а что такое в данном случае
C#
1
return default(int);
?

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

Цитата Сообщение от Rius Посмотреть сообщение
Бессмысленное значение
Если интерпретировать ноль как бессмысленное - то да, но в общем то это тоже число и 0≠null.
0
Эксперт .NET
10566 / 6490 / 1506
Регистрация: 25.05.2015
Сообщений: 19,661
Записей в блоге: 14
27.05.2015, 14:26 13
В том смысле бессмысленное, что его значение не имеет значения. При ok == false возвращаемый результат просто игнорируется, а вернуть что-то надо. Хотя можно и ?? .
blacksm, покажите код, в котором эта муть используется?
0
307 / 284 / 102
Регистрация: 06.05.2014
Сообщений: 861
27.05.2015, 14:30 14
Цитата Сообщение от Rius Посмотреть сообщение
что его значение не имеет значения
Почему не имеет? Как раз таки имеет, для ссылочных типов - null, для значимых - зависит от того числовой это тип или структура; для числовых значение по умолчанию равно нулю.
https://msdn.microsoft.com/ru-... h0h0d.aspx
P.S. А вот увидеть то, где "это" используется, я бы тоже не прочь.
0
Эксперт .NET
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
27.05.2015, 14:32 15
Мне кажется, автор пытается реализовать свой похапэшный 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
27.05.2015, 14:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.05.2015, 14:32
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru