私はまだ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);
これは戻り値の型を許可せず、そのままにしておくと関数が止まることなく継続します。これは望ましくありません。
メソッドを早期に終了するには(プログラムを終了せずに)2つの方法があります。
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"
を使用したい。Markの答えに加えて、(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
ステートメントに入る場合にのみ戻ります。
return null;
を使用して、返されるデータがないことを示します
ここでの基本的な問題は、System.Environment.Exit
をreturn
と間違えていることです。
@ジョン、アールズ、ネイサン。私がuniで学んだ方法は、関数は値を返しますが、メソッドは返しません。一部の言語では、構文は実際に異なります。例(特定の言語なし):
Method SetY(int y) ...
Function CalculateY(int x) As Integer ...
現在、ほとんどの言語は両方のバージョンで同じ構文を使用しており、戻り値の型としてvoidを使用して、実際には戻り値の型がないことを示しています。構文がより一貫性があり、メソッドから機能へ、またはその逆に変更しやすいためだと思います。
関数がvoidの場合、関数を終了するとreturn
になります。それ以外の場合は、明示的なreturn someValue
を実行する必要があります。マークが言及したように、throw
例外もできます。あなたの質問の背景は何ですか?関数を終了するいくつかの方法を示すために、より大きなコードサンプルがありますか?