2011-03-10 26 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