vb.net select…c#に相当するケースステートメント
-
20-09-2019 - |
質問
C#を使用し始めたばかりで、いくつかの問題があります。次のようなVB.NET Selectステートメントに相当するC#をコーディングする方法はありますか?
Select Object.Name.ToString()
Case "Name1"
'Do something
Case "Name2"
'Do something else
Case Else
'Do the default action
End Select
どんな助けも大歓迎です。
これまでのところ入力をありがとう、次のように1つのイベントハンドラーにいくつかのコントロールをフックし、各コントロールに対してわずかに異なるアクションを実行したい場合はどうでしょうか。
Private Sub Button_Click(sender as Object, e as EventArgs) _
Handles button1.Click, Button2.Click
'do a general activity
Select CType(sender, Button).Name
Case button1.Name
'do something
Case button2.Name
'do something else
Case Else
'do the defalut action
End Select
End Sub
ネストされたIFSを使用することなく、上記のSelectステートメントをC#で実行する方法はありますか?
解決
私は時間が経つにつれていくつかのvb.netを見つけるようになりました Select...Case
コンストラクトはC#に適用されず、唯一の方法は多くのIFを書くことです。
たとえば、vb.netでは、次のことを書くことができます。
Dim num as Integer = 5
Select Case num
Case 1 to 10
'do something
Case 11 to 20
'do another thing
Case Else
'do the default
End Select
しかし、ノーはありません switch
この種の何かを実行できるC#で構築します。あなたはそうするようにラウンドアバウトでコーディングする必要があります:
int num = 5;
switch (num)
{
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
//do something
break;
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
//do something else
break;
default:
//do the default
break;
}
または、あなたがたまたま仕事をしている場合 Double
または、離散値の代わりに連続で構成される任意のタイプでは、使用する必要があります if
s必要なアクションを取得します。
理由? C# 's switch
さまざまなものに定数が必要です case
s。これはVB.NETのものとは異なります Select Case
これにより、範囲を書くことができます。
他のヒント
あなたはスイッチステートメントを探しているでしょう...
switch (Object.Name.ToString())
{
case "Name1":
//Do something
break;
default:
//default
break;
}
ブレークはインポートであることに注意してください。そうしないと、プログラムはケースを通じてドロップされます。ほぼすべてのC#入門書でこれを見つけることができるはずです...
使う switch
声明。
switch (object.Name.ToString()) {
case "Name1":
break;
//Do something
case "Name2":
break;
//Do something else
default:
break;
//Do the default action
}
そして、あることを忘れないでください 無料のオンライン変換ツール これにより、VB.NETをC#とその逆に変換できます。
C#7では、スイッチは大幅に強化されました, 、現在、ケース内でより多くの条件を適用することが可能になりましたが、VBバージョンほど「クリーン」ではありません。たとえば、次のようなことができます。
switch (examScore)
{
case int es when es >= 90: grade = "A"; break;
case int es when es >= 80: grade = "B"; break;
case int es when es >= 70: grade = "C"; break;
case int es when es >= 60; grade = "D"; break;
default: grade = "F"; break;
}
採取 /参照: