質問

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 または、離散値の代わりに連続で構成される任意のタイプでは、使用する必要があります ifs必要なアクションを取得します。

理由? C# 's switch さまざまなものに定数が必要です cases。これは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;
}

採取 /参照:

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top