2010-03-15 31 views
17

Sadece C# kullanmaya başladım ve birkaç sorunum var. Aşağıdaki gibi VB.NET Select deyiminin C# eşdeğerini kodlamanın bir yolu var mı?VB.NET Select ... Vaka Eşittir C#

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

Herhangi bir yardım çok takdir edilecektir.

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 

mi: Şimdiye kadar şimdi aşağıdaki gibi bir olay işleyicisi için çeşitli denetimler kanca ve her denetim için biraz farklı bir eylemi gerçekleştirmek istiyorsanız neyi hakkında girişi için


Teşekkür Iç içe geçmiş ifs kullanmak zorunda kalmadan C# 'da yukarıdaki select deyimini yapmanın herhangi bir yolu var mı?

cevap

14

Bazı VB.NET Select...Case yapılarının C# uygulamasında geçerli olmadığını ve çok fazla ifs yazmanın tek yolunu bulmaya geldim. .

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 

Ama bu tür şeyler yapmaya izin veren C# hiçbir switch yapısı vardır:

Örneğin, VB.NET içinde yazabilirsiniz. Öyle gibi dolaylı olarak kod gerekecek: Eğer Double veya yerine ayrık değerlerin sürekli oluşur türlü çalışmayı için gerçekleşmesi durumunda

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

Veya, hiç if s kullanmak gerekecektir gerekli eylemi al.

Nedeni? C# switch, çeşitli case s için sabitler gerektirir. Bu, yazma aralıklarına izin veren VB.NET'in Select Case'dan farklıdır. Eğer bir özel durum atmak ya da bunun yerine bir değer dönerseniz `break` anahtar kelimeyi belirtmek gerekmez

+1

Sadece perspektif nedeniyle yuvarlaktır. Örneğin, sayısal olmayan durumlarda, anahtar ifadesi üstündür. –

5

switch ifadesini kullanın.

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

Ve C# ve tersine kadar VB.net dönüştürmek sağlayan bir free online conversion tool olduğunu unutmayın. Sen switch ifadesi için yapmamız gerekecekti

9

... sonları aksi program durumlarda aracılığıyla düşecek, ithalat olduğunu

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

Not. Bunu hemen hemen her C# girişimde bulabilmelisiniz ...

+1

Not. – intoOrbit

+1

true, ancak bir tercih olarak, genellikle bir anahtarın içinden dönmek yerine, yöntemlerden tek bir dönüşü seviyorum. – Paddy