我有一個if語句是這樣的:VB if語句:你有多少和公司可以有
If r1.Left < r2.Right AndAlso r2.Right < r1.Right AndAlso r2.Top + r2.Height > r1.Top Then
我想知道如果它是壞的,有這麼多AndAlso
的。它確實起作用,只是弄清楚發生了什麼。有沒有一種以更簡單的方式進行這項測試的方法?或者這是做事的正確方式?
我有一個if語句是這樣的:VB if語句:你有多少和公司可以有
If r1.Left < r2.Right AndAlso r2.Right < r1.Right AndAlso r2.Top + r2.Height > r1.Top Then
我想知道如果它是壞的,有這麼多AndAlso
的。它確實起作用,只是弄清楚發生了什麼。有沒有一種以更簡單的方式進行這項測試的方法?或者這是做事的正確方式?
據我所知,MSDN文檔不說有關可在一個If
使用條件的最大數目什麼聲明 - 所以任何限制都可能受可用堆棧空間的支配,而且很可能你會得到任何附近的地方。
至於做法:它不是在編碼方面不好,但它可以如你所說,變得難以閱讀。我個人傾向於使用連續行使這些語句更具可讀性:
If r1.Left < r2.Right _
AndAlso r2.Right < r1.Right _
AndAlso r2.Top + r2.Height > r1.Top Then
您可以隨時引入新的變量或方法以提高可讀性。
所以不是
If r1.Left < r2.Right AndAlso r2.Right < r1.Right AndAlso r2.Top + r2.Height > r1.Top Then
像
Function RectIsInsideOf(r1 As ..., r2 As ...) As Bool
Return r1.Left < r2.Right AndAlso
r2.Right < r1.Right AndAlso
r2.Top + r2.Height > r1.Top
End Function
...
If RectIsInsideOf(r1, r2) Then ...
那麼您對if語句中可以使用多少個操作符沒有任何限制。此外,根據程序員的觀點,它是完全正確的(儘可能多地使用),畢竟,如果陳述是關於這一點的話。但是,如果您遇到需要檢查太多操作員的情況,那麼您必須考慮採用不同的方法。
在您的具體示例中,您使用的代碼僅包含兩個AndAlso運算符,這對您的程序來說不是很大的開銷。如果你打算只在一個位置,在你的程序,然後你的方法可以被認爲是正確的,以檢查此條件,如果你將需要在許多地方,這種檢查則是明智的,寫一個函數,該函數爲BigYellowCactus提示。
希望這有助於...
你知道的['Rectangle.Contains'方法(http://msdn.microsoft.com/en-us/library/0kh3ee9e.aspx),對不對?但更一般的說,如果圖書館沒有提供完成你想要的測試的方法,你可以自己寫。 – 2012-07-26 11:20:44