Nó không phải là giống như sử dụng các từ khóa break
với các câu lệnh switch
từ các ngôn ngữ giống như C. Với switch
, nếu bạn bỏ qua điều khiển ngắt, nó sẽ rơi vào trường hợp tiếp theo. Với một Visual Basic Select
, kiểm soát không rơi qua; một break
đã được ngụ ý.
Tuy nhiên, bạn có thể sử dụng nó làm điều khoản bảo vệ, để tránh cần phải lồng mã một cấp khác trong khối if
. Ví dụ:
Select Case SomeEnumVar
Case SomeEnum.SomeValue1
If Not SomeCondition Then Exit Select
'Do something
Case SomeEnum.SomeValue2
'Do something else
Case Else
'Default case
End Select
Đó là một chút đẹp hơn so với mã tương đương này:
Select Case SomeEnumVar
Case SomeEnum.SomeValue1
If SomeCondition Then
'Do something
End If
Case SomeEnum.SomeValue2
'Do something else
Case Else
'Default case
End Select
Bất kỳ chênh lệch hiệu suất giữa hai mẫu này là gần như chắc chắn không đáng kể so với các yếu tố khác.
Một cách sử dụng khác là nếu bạn có nhiều trường hợp và một trong các trường hợp được đặt sao cho trận đấu có nghĩa là bạn muốn ngừng kiểm tra tất cả các trường hợp khác. Điều này đã xảy ra, và vì vậy bạn có thể chỉ có một tuyên bố trường hợp trống ở đó. Nhưng bạn cũng có thể thêm một lối ra chọn để làm cho nó rõ ràng để bảo trì mà bạn mong đợi trường hợp này không làm bất cứ điều gì khác.
Nguồn
2009-12-17 19:56:05
Tôi thực sự nghĩ rằng ví dụ thứ hai đẹp hơn nhiều so với ví dụ thứ hai bởi vì ví dụ thứ hai là cấu trúc thứ nhất và thứ nhất là không. Hướng dẫn phá vỡ dòng thực hiện (như Goto, Thoát, vv) không cấu trúc mã. –
@SoMoS: Tôi muốn có các điều khoản bảo vệ ở đầu phương pháp để kiểm tra điều kiện tiên quyết, nhưng ở giữa trường hợp Chọn, tôi có xu hướng đồng ý với bạn rằng ví dụ thứ hai tốt hơn trong hầu hết các trường hợp. –