【发布时间】:2010-10-07 13:39:55
【问题描述】:
在question 中,一位用户评论说永远不要在 VB 中使用 With 块。为什么?
【问题讨论】:
标签: vb.net
在question 中,一位用户评论说永远不要在 VB 中使用 With 块。为什么?
【问题讨论】:
标签: vb.net
“从不”是一个强词。
我认为只要你不滥用它就可以了(比如嵌套)
恕我直言 - 这更好:
With MyCommand.Parameters
.Count = 1
.Item(0).ParameterName = "@baz"
.Item(0).Value = fuz
End With
比:
MyCommand.Parameters.Count = 1
MyCommand.Parameters.Item(0).ParameterName = "@baz"
MyCommand.Parameters.Item(0).Value = fuz
【讨论】:
With 关键字还提供了另一个好处——With 语句中的对象只需要“限定”一次,这可以提高性能。在此处查看 MSDN 上的信息:
http://msdn.microsoft.com/en-us/library/wc500chb(VS.80).aspx
所以,无论如何,使用它。
【讨论】:
With 关键字没有任何问题。确实,嵌套时它可能会降低可读性,但解决方案就是不要使用嵌套的 With。
Delphi 中可能存在命名空间问题,它不会强制使用前导点,但该问题在 VB.NET 中根本不存在,因此发布有关 Delphi 的咆哮的人正在这个问题上浪费时间。
我认为很多人不喜欢 With 关键字的真正原因是它不包含在 C* 语言中,并且许多程序员自动认为他/她最喜欢的语言中不包含的每个功能都是不好的。
【讨论】:
与其他选项相比,它只是没有帮助。
如果您真的想念它,您可以为您的对象创建一个或两个字符的别名。别名只需要设置一行,而 With 块(With + End With 行)则需要两行。
别名还为您提供了变量类型的快速鼠标悬停参考。它为 IDE 提供了一个钩子,可以帮助您根据需要跳回到块的顶部(尽管如果块那么大,您还有其他问题)。它可以作为参数传递给函数。您可以使用它来引用索引属性。
所以我们有一个替代方案,可以用更少的代码提供更多的功能。
另请参阅此问题:
Why is the with() construct not included in C#, when it is really cool in VB.NET?
【讨论】:
with 关键字仅在精彩的 Verity Stob 的一篇搞笑文章中的传递参考 here 中被侧滑,但对于尖酸刻薄来说这是值得的:请参阅开头的段落
虽然我们正在处理标识符混淆。 with 关键字...
值得阅读整个article!
【讨论】: