2011-03-10 25 views
2

在以下代碼塊中,VB.NET是否正常退出With塊如果Var1 = 2從VB.NET退出使用塊

With MyObject 
    .Property1 = "test" 
    If Var1 = 2 Then 
     Return True 
    End If 
    .Property2 = "Test2" 
End With 

Return False 

我記得這是一個問題,在VB6,並引起頭痛與unpredicable行爲 - 是VB.NET的相同的是真的嗎?

+0

哇,這很奇怪。我從來沒有經歷過這種行爲,儘管我花了所有的時間,我花了編程在VB.NET中,我想有一個很好的理由,爲什麼我從不使用'用'陳述... – 2011-03-10 09:45:56

回答

5
+1

+1提倡合法的GOTO! – slugster 2011-03-10 09:40:15

+0

@slugster,呵呵..不提倡,只是引用,沒有個人意見表示:) – decltype 2011-03-10 09:42:34

0

只好在這裏添加其他答案,因爲我主要是好奇。從來沒有用過很多,我不記得過早退出該塊,但我只是在VB2010下測試它,它似乎工作得很好(換句話說,就像我期望的那樣,換句話說......

如果Var1 = 2,則函數返回TRUE,並且MyObject.Property1的值爲「Test」,但MyObject.Property2未設置。

它可能在測試中以這種方式工作,但在真實應用程序中在調試關閉等等,它可以工作不同,所以,這是考慮......

+0

是的,我讀到的方式是將控制轉出'With'語句在技術上不受支持。這並不意味着它不會工作:無論什麼原因,代碼都會返回,因爲你在那裏拋出了一個'return'語句。但這並不意味着所有的事情都會得到很好的清理,並且沒有可能出現的錯誤行爲。這是編程的時代之一,你必須考慮超越「它編譯」的東西嗎?當做出設計決定時。 – 2011-03-11 00:55:59