Я все еще довольно плохо знаком с C# и переношу трудности привыкать к нему по сравнению с C/CPP.
Как Вы выходите, функция на C#, не выходя из программы как эта функция была бы?
if (textBox1.Text == "" || textBox1.Text == String.Empty || textBox1.TextLength == 0)
textBox3.Text += "[-] Listbox is Empty!!!!\r\n";
System.Environment.Exit(0);
Это не позволит типы возврата, и, если оставлено в покое это будет продолжать продолжаться через неостановленную функцию. Который является нежелательным.
Есть два способа преждевременного выхода из метода (без выхода из программы):
return
. Исключения следует использовать только в исключительных обстоятельствах - когда метод не может продолжаться и не может вернуть разумное значение, которое было бы разумно для вызывающего. Обычно вам нужно просто вернуться, когда закончите.
Если ваш метод возвращает void, вы можете написать return без значения:
return;
Конкретно о вашем коде:
Вы также должны использовать фигурные скобки при написании оператора if, чтобы было ясно, какие операторы находятся внутри тела оператора if:
if (textBox1.Text == String.Empty)
{
textBox3.Text + = "[-] Список пуст !!!! \ r \ n";
}
возвращение; // Вы уверены, что хотите, чтобы возврат был здесь ??
Если вы используете .NET 4, есть полезный метод, который, в зависимости от ваших требований, вы можете рассмотреть здесь: String.IsNullOrWhitespace .
Environment.Newline
вместо "\ r \ n"
. В дополнение к ответу Марка, вам также нужно помнить об области видимости, которая (как и в C/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
оператор.
@ Джон, Эрлз и Натан. В uni я узнал об этом так: функции возвращают значения, а методы - нет. В некоторых языках синтаксис был другим. Пример (без конкретного языка):
Method SetY(int y) ...
Function CalculateY(int x) As Integer ...
Большинство языков теперь используют один и тот же синтаксис для обеих версий, используя void в качестве возвращаемого типа, чтобы сказать, что на самом деле нет возвращаемого типа. Я предполагаю, что это потому, что синтаксис более согласован и его легче менять от метода к функции и наоборот.
Если функция является недействительной, завершение функции вернет
. В противном случае вам нужно явно вернуть someValue
. Как упоминал Марк, вы также можете выбросить
исключение. В чем контекст вашего вопроса? У вас есть пример кода большего размера, чтобы показать вам несколько способов выхода из функции?
Основная проблема здесь в том, что вы ошибочно принимаете System.Environment.Exit
за return
.