2010-10-25 32 views
10

VB6 có thử nghiệm điều kiện ngắn mạch không? Tức là, tôi có thể chắc chắn một tuyên bố như ...VB6 có ngắn mạch điều kiện phức tạp không?

If index <= array_size And array(index) > something Then 

sẽ không bao giờ vỡ mảng, bất kể giá trị của chỉ mục có thể xảy ra như thế nào?

Trả lời

22

Không, VB23 AndOr không ngắn mạch (đó là lý do tại sao các phiên bản ngắn mạch được gọi là AndAlsoOrElse trong VB.net - tương thích ngược).

+2

Tôi không biết VB.NET đã hỗ trợ điều này! Cảm ơn rất nhiều vì câu trả lời khai sáng này. Bạn đã lưu cho tôi nhiều câu lệnh 'if' lồng nhau. – Brad

+4

Cảm ơn bạn, KennyTM. Bạn có nghi ngờ đã cứu tôi nhiều mảng bùng nổ. –

1

Chọn Case là phương pháp đoản mạch nếu bạn có thể sử dụng nó cho mục đích của mình.

+0

Tôi không nghĩ rằng tôi có thể, nhưng cảm ơn bạn cho đề xuất nào. –

3

Ngoài khối If/Then/Else/End If, VB6 cũng hỗ trợ xây dựng một dòng If/Then/Else. Bạn có thể lồng chúng để đạt được đoản mạch đơn giản. Tuy nhiên, vì đó là một tuyên bố một dòng, bạn phải thực hiện hành động mong muốn của mình trên cùng một dòng. Ví dụ:

' From (no short-circuit) 
If index <= array_size And array(index) > something Then 

' To (short-circuit) 
If index <= array_size Then If array(index) > something Then ... 
+0

Vì vậy, 'AndAlso' trong VB.Net là' Then Nếu' trong VB6. Bạn có thể sử dụng tiếp tục dòng (gạch dưới) theo ý muốn. – wqw

+0

@wqw, Yep, dòng tiếp tục có thể được sử dụng. Tuy nhiên, bạn không thể có một khối câu lệnh sau dòng đơn 'Then'. Nếu bạn cần thực hiện nhiều thao tác, bạn cần sử dụng ':' để tách chúng. – Bond

+0

Bất cứ nơi nào trong VB6 bạn có thể sử dụng 'Và', trong VB.Net bạn có thể sử dụng' AndAlso' để làm ngắn mạch biểu thức. Những gì tôi có nghĩa là trong 'If' tuyên bố trong VB6 bất cứ nơi nào bạn có thể sử dụng' Và' bạn có thể sử dụng 'Sau đó Nếu' (coi nó như một bool opertator duy nhất mặc dù nó không) để ngắn mạch biểu hiện. – wqw

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