2010-03-15 13 views
17

Właśnie zacząłem używać C# i mam kilka problemów. Czy istnieje sposób, aby zakodować równoważnik C# instrukcji Select VB.NET, jak poniżej?VB.NET Wybierz ... Case Statement Równoważny w C#

Select Object.Name.ToString() 
    Case "Name1" 
     'Do something 
    Case "Name2" 
     'Do something else 
    Case Else 
     'Do the default action 
End Select 

Każda pomoc zostanie bardzo doceniona.


Dzięki za wejście do tej pory teraz co gdybym zaczepić kilka elementów sterujących do jednej obsługi zdarzeń jak poniżej i chcę wykonać nieco inną akcję dla każdego sterowania:

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 

Czy jest jakikolwiek sposób wykonywania powyższej instrukcji select w C# bez konieczności korzystania z zagnieżdżonych ifs?

Odpowiedz

14

Przyszedłem znaleźć z czasem, że niektóre konstrukcje VB.NET Select...Case nie mają zastosowania w języku C#, a jedynym sposobem jest napisać wiele ifs .

Na przykład, w VB.NET, można napisać:

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 

Ale nie ma switch konstrukt w C#, który pozwala zrobić coś tego rodzaju. Będziesz musiał kodować w rondzie tak:

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; 
} 

Lub jeśli zdarzy ci się pracować z Double lub jakiegokolwiek typu, który składa się z ciągłym zamiast wartości dyskretnych, będziesz musiał użyć if s do uzyskać wymagane działanie.

Powód? C# 's switch wymaga stałych dla różnych case s. Różni się od VB.NET Select Case, który pozwala na zapisywanie zakresów.

+1

Jest tylko okrągła z powodu perspektywy. Na przykład w przypadkach nielicznikowych instrukcja switch może być lepsza. –

5

Użyj instrukcji switch.

switch (object.Name.ToString()) { 
    case "Name1": 
    break; 
    //Do something 
    case "Name2": 
    break; 
    //Do something else 
    default: 
    break; 
    //Do the default action 
} 

I nie zapominaj, że istnieje free online conversion tool który pozwala konwertować VB.net C# i na odwrót.

9

Byłbyś poszukuje instrukcji switch ...

switch (Object.Name.ToString()) 
{ 
    case "Name1": 
    //Do something 
    break; 
    default: 
    //default 
    break; 
} 

Należy zauważyć, że przerwy są import, w przeciwnym razie program będzie spadać przez swoich spraw. Powinieneś być w stanie znaleźć to na prawie każdym C# wprowadzenie ...

+1

Należy zauważyć, że nie trzeba określać słowa kluczowego 'break', jeśli zamiast niego zostanie zgłoszony wyjątek lub zwrócona wartość. – intoOrbit

+1

prawda, ale tak jak preferencje, generalnie podoba mi się pojedynczy zwrot z metod, zamiast wracać z wnętrza przełącznika. – Paddy