Подтвердить что ты не робот

Как выйти из метода без выхода из программы?

Я все еще довольно новичок в С#, и мне сложно привыкнуть к нему по сравнению с C/CPP.

Как выйти из функции на С# без выхода из программы, как эта функция будет?

if (textBox1.Text == "" || textBox1.Text == String.Empty || textBox1.TextLength == 0)
    textBox3.Text += "[-] Listbox is Empty!!!!\r\n";
System.Environment.Exit(0);

Это не позволит возвращать типы, и если их оставить в покое, он продолжит работу без функции. Что нежелательно.

4b9b3361

Ответ 1

Есть два способа выйти из метода раньше (без выхода из программы):

  • Используйте ключевое слово return.
  • Выбросьте исключение.

Исключения должны использоваться только для исключительных обстоятельств - когда метод не может продолжаться и он не может вернуть разумное значение, которое имеет смысл для вызывающего. Обычно, хотя вы должны просто вернуться, когда закончите.

Если ваш метод возвращает void, вы можете записать return без значения:

return;

В частности, о вашем коде:

  • Нет необходимости писать один и тот же тест три раза. Все эти условия эквивалентны.
  • Вы также должны использовать фигурные скобки, когда вы пишете оператор if, чтобы было ясно, какие операторы находятся внутри тела оператора if:

    if (textBox1.Text == String.Empty)
    {
        textBox3.Text += "[-] Listbox is Empty!!!!\r\n";
    }
    return; // Are you sure you want the return to be here??
    
  • Если вы используете .NET 4, есть полезный метод, который в зависимости от ваших требований, который вы можете использовать здесь: String.IsNullOrWhitespace.

  • Вы могли бы использовать Environment.Newline вместо "\r\n".
  • Возможно, вам захочется рассмотреть другой способ отображения недопустимого ввода, отличного от написания сообщений в текстовое поле.

Ответ 2

В дополнение к ответу "Марк" вам также нужно знать область, которую (как в C/С++) указывается с помощью фигурных скобок. Итак:

if (textBox1.Text == "" || textBox1.Text == String.Empty || textBox1.TextLength == 0)
    textBox3.Text += "[-] Listbox is Empty!!!!\r\n";
return;

всегда возвращается в эту точку. Однако:

if (textBox1.Text == "" || textBox1.Text == String.Empty || textBox1.TextLength == 0)
{
    textBox3.Text += "[-] Listbox is Empty!!!!\r\n";
    return;
}

будет возвращаться только в том случае, если он входит в этот оператор if.

Ответ 3

Если функция является пустой, завершение функции будет return. В противном случае вам нужно сделать явный return someValue. Как отметил Марк, вы также можете исключить throw исключение. Каков контекст вашего вопроса? У вас есть более крупный пример кода, с помощью которого можно показать некоторые способы выхода из этой функции?

Ответ 4

Основная проблема заключается в том, что вы ошибаетесь в System.Environment.Exit для возврата.

Ответ 5

@Джон, Эрлц и Натан. Как я узнал об этом в uni: функции возвращают значения, а методы - нет. В некоторых языках синтаксис/фактически был другим. Пример (нет конкретного языка):

Method SetY(int y) ...
Function CalculateY(int x) As Integer ...

Большинство языков теперь используют один и тот же синтаксис для обеих версий, используя void как возвращаемый тип, чтобы сказать, что на самом деле это не тип возврата. Я предполагаю это, потому что синтаксис более согласован и легче изменяется от метода к функции, и наоборот.

Ответ 6

Я бы использовал return null;, чтобы указать, что нет данных для возврата