VB With / End With关键字有什么不好?

时间:2009-02-13 22:17:49

标签: vb.net

在这个question中,用户评论说从不在VB中使用With块。为什么呢?

5 个答案:

答案 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

所以一定要使用它。