2013-07-09 31 views
5

Tôi có một tuyên bố trong VB.net rằng tôi nghĩ rằng tôi đã viết chính xác để ngăn chặn một nửa thứ hai được đánh giá. Nó trông giống như thế này:Ngăn chặn nửa thứ hai của một tuyên bố nếu nửa đầu là null

Nếu (. (MyDataSet2 IsNot Không có gì) Hoặc myDataSet2.Tables ("CurData") Rows.Count> 0)

Tuy nhiên nó không bỏ qua expresion thứ hai "myDataSet2 .Tables ("CurData"). Rows.Count> 0 "như tôi muốn.

Tôi nên thay đổi điều gì?

+0

Tôi đã nói sử dụng OrElse trong câu trả lời của tôi, nhưng có thể bạn muốn làm một mạch logic AND, phải không? Trong trường hợp đó, hãy sử dụng AndAlso. Tôi hỏi vì không có nhiều ý nghĩa để kiểm tra xem tập dữ liệu của bạn có là gì không, sau đó nếu số liệu sai (nghĩa là tập dữ liệu của bạn không có gì), hãy kiểm tra một số thuộc tính của tập dữ liệu không tồn tại. Bạn sẽ nhận được một tham chiếu null theo cách đó. –

+0

Có bạn là chính xác, những gì tôi thực sự muốn làm là 'AndAlso'! –

Trả lời

8

Sử dụng toán tử OrElse.

If myDataSet2 IsNot Nothing OrElse myDataSet2.Tables("CurData").Rows.Count > 0 

EDIT: Xem nhận xét của tôi về câu hỏi ban đầu của bạn. Bạn đang tìm kiếm PROBABLY:

If myDataSet2 IsNot Nothing AndAlso myDataSet2.Tables("CurData").Rows.Count > 0 

Điều đó sẽ kiểm tra nếu myDataSet2 không rỗng. Giả sử không, nó sẽ kiểm tra xem có ít nhất một hàng hay không. Nếu nó là null, thì điều kiện thứ hai sẽ không được kiểm tra.

4

Bạn cần đặt câu lệnh thứ hai vào mệnh đề if đầu tiên.

Như thế này:

If(statement1) then 
    If(statemtent2) then 
    Else 
    End if 
Else 
End If 

Vì nó là bây giờ cả hai được đánh giá và nếu một trong số họ là đúng nội dung trong khoản nếu bạn sẽ được thực hiện.

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