在这个question中,用户评论说从不在VB中使用With块。为什么呢?
答案 0 :(得分:15)
“从不”是一个强有力的词。
我认为只要你不滥用它(如嵌套)就好了
恕我直言 - 这样更好:
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
答案 1 :(得分:4)
With关键字没有任何问题。确实,它可能会降低嵌套时的可读性,但解决方案只是不使用嵌套的。
Delphi中可能存在命名空间问题,它没有强制执行一个前导点,但VB.NET中根本不存在这个问题,因此发布有关Delphi的咆哮的人正在这个问题上浪费时间。
我认为许多人不喜欢With关键字的真正原因是C *语言中没有包含它,许多程序员自动认为他/她最喜欢的语言中没有包含的每个功能都不好。
答案 2 :(得分:1)
与其他选项相比,这没什么用处。
如果你真的错过它,你可以为你的对象创建一个或两个字符别名。别名只需要一行设置,而不是两行用于With块(With + End With lines)。
别名还为您提供变量类型的快速鼠标悬停参考。它为IDE提供了一个钩子,可以帮助您根据需要跳回到块的顶部(尽管如果块很大,则会出现其他问题)。它可以作为参数传递给函数。您可以使用它来引用索引属性。
所以我们有一个替代方案,可以用更少的代码提供更多的功能。
另见这个问题:
Why is the with() construct not included in C#, when it is really cool in VB.NET?
答案 3 :(得分:0)
带有关键字的只会在精彩的here的热闹文章中传递参考Verity Stob,但是对于讽刺的是值得的:见段落开始
虽然我们处于标识符混淆。 with keyword ...
值得阅读整个article!
答案 4 :(得分:0)
With关键字还提供了另一个好处 - With语句中的对象只需要“限定”一次,这可以提高性能。在这里查看MSDN上的信息:
http://msdn.microsoft.com/en-us/library/wc500chb(VS.80).aspx
所以一定要使用它。