C#を使い始めたばかりですが、いくつか問題があります。次のようなVB.NETSelectステートメントに相当する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
ネストされたifを使用せずにC#で上記のselectステートメントを実行する方法はありますか?
時間が経つにつれて、一部の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
しかし、C#には、この種のことを実行できるswitch
構造はありません。次のようにラウンドアバウトでコーディングする必要があります。
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#のswitch
には、さまざまなcase
sの定数が必要です。これは、範囲の書き込みを許可するVB.NETのSelect Case
とは異なります。
あなたはswitchステートメントを探しているでしょう...
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;
}
/参照から取得: