2010-03-15 36 views
17

Tôi mới bắt đầu sử dụng C# và tôi đã có một vài vấn đề. Có cách nào để mã C# tương đương của VB.NET Chọn tuyên bố như sau?VB.NET Chọn ... Trường hợp Tuyên bố Tương đương trong C#

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

Mọi trợ giúp sẽ được đánh giá cao.


Cảm ơn các đầu vào cho đến nay bây giờ những gì về nếu tôi treo một số điều khiển với một xử lý sự kiện như trong những điều sau đây và tôi muốn thực hiện một hành động hơi khác nhau đối với từng điều khiển:

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 

Is có cách nào để thực hiện câu lệnh select ở trên trong C# mà không cần phải sử dụng ifs lồng nhau không?

Trả lời

14

Tôi đã tìm thấy theo thời gian mà một số cấu trúc VB.NET Select...Case không áp dụng trong C# và cách duy nhất là viết nhiều .

Ví dụ, trong VB.NET, bạn có thể viết:

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 

Nhưng không có switch cấu trúc trong C# cho phép bạn làm điều gì đó thuộc loại này. Bạn sẽ phải mã trong vòng xoay như vậy:

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

Hoặc nếu bạn tình cờ được làm việc với Double hoặc bất kỳ loại mà được tạo thành liên tục thay vì giá trị rời rạc, bạn sẽ phải sử dụng if s để nhận được hành động bắt buộc.

Lý do? C# 's switch yêu cầu hằng số cho các khác nhau case s. Điều này khác với VB.NET Select Case cho phép viết phạm vi.

+1

Nó chỉ là vòng về do quan điểm. Ví dụ, trong các trường hợp không phải số, câu lệnh switch có thể cao hơn. –

5

Sử dụng câu hỏi switch.

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

Và đừng quên rằng có free online conversion tool cho phép bạn chuyển đổi VB.net thành C# và ngược lại.

9

Bạn muốn được tìm kiếm câu lệnh switch ...

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

Lưu ý rằng các vi phạm là nhập khẩu, nếu không chương trình sẽ thả qua trường hợp của bạn. Bạn sẽ có thể tìm thấy điều này trên hầu hết mọi giới thiệu C# ...

+1

Lưu ý rằng bạn không phải chỉ định từ khóa 'break' nếu bạn ném một ngoại lệ hoặc trả về một giá trị thay thế. – intoOrbit

+1

đúng, nhưng cũng giống như một sở thích, tôi thường thích một trở về duy nhất từ ​​các phương thức, thay vì trở về từ bên trong một switch. – Paddy

Các vấn đề liên quan