Как выйти из функции? - PullRequest
15 голосов
/ 13 апреля 2010

я знаю, что в vb.net вы можете просто сделать Exit Sub

но я хотел бы знать, как выйти из события нажатия кнопки?

вот мой код:

private void button1_Click(object sender, EventArgs e)
{
    if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "")
    {
        //exit this event
    }
}

Ответы [ 7 ]

29 голосов
/ 13 апреля 2010

Используйте оператор return.

Ссылка MSDN

20 голосов
/ 13 апреля 2010

Используйте ключевое слово return.

Из MSDN:

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

Так что в вашем случае использование будет:

private void button1_Click(object sender, EventArgs e)
{
    if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "")
    {
        return; //exit this event
    }
}
8 голосов
/ 13 апреля 2010
return; // Prematurely return from the method (same keword works in VB, by the way)
2 голосов
/ 13 марта 2017

Используйте ключевое слово return.

return; //exit this event
2 голосов
/ 14 января 2016

Существует два способа досрочного выхода из метода (без выхода из программы):

i) Используйте ключевое слово return.
II) бросить исключение.

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

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

return;
2 голосов
/ 13 апреля 2010

Я бы посоветовал попытаться избежать возврата / выхода, если это не нужно. Некоторые люди искренне говорят вам, чтобы НИКОГДА не делать этого, но иногда это просто имеет смысл. Однако, если вы можете структурировать свои чеки так, чтобы вам не приходилось их вводить, я думаю, что людям будет проще следовать вашему коду позже.

1 голос
/ 31 мая 2010

Йо можно просто за Google "выйти из sub в c #".

Кроме того, зачем вам проверять каждое текстовое поле, если оно пустое? Вы можете разместить требуемый fieldvalididator для этих текстовых полей, если это приложение asp.net и проверить, если (Page.IsValid)

Или другое решение - не выполнять следующие условия:

private void button1_Click(object sender, EventArgs e)
{
    if (!(textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == ""))
    {
        //do events
    }
}

А лучше использовать String.IsNullOrEmpty:

private void button1_Click(object sender, EventArgs e)
{
    if (!(String.IsNullOrEmpty(textBox1.Text)
    || String.IsNullOrEmpty(textBox2.Text)
    || String.IsNullOrEmpty(textBox3.Text)))
    {
        //do events
    }
}
...