在VB.NET中扩展With-keyword

时间:2010-10-29 14:13:46

标签: vb.net with-statement

在我目前的项目中,每个人都根据它们是什么以及它们的作用来命名变量和方法。这对于快速理解代码很有用,但是有很多长的可变名称会带来一些麻烦,例如将数据集复制到实体/对象时。因此,当您理解代码时,可读性仍然会受到打击。

veryLongVariableName.Id = datasetVeryLongVariableName.Id
veryLongVariablename.Something = datasetVeryLongVariableName.Something
etc.

使用VB.NET的With关键字可以提供帮助。

With veryLongVariableName

    .Id = datasetVeryLongVariableName.Id
    .Something = datasetVeryLongVariableName.Something

End With

现在,我的问题是,有没有办法使用With或类似的东西,但同时使用几个变量?类似的东西:

With veryLongVariableName As a, datasetVeryLongVariableName as b

    a.Id = b.Id
    a.Something = b.Something

End With

我都是用于描述性命名约定,但它们确实会使事情变得混乱。特别是在VB!

3 个答案:

答案 0 :(得分:4)

不,这是不可能的。

With仅适用于单个对象。请参阅MSDN

但是,您可以nest With statements(虽然不推荐这样做,因为最终可能会使您的代码无法读取)。

答案 1 :(得分:4)

如果执行这些赋值集的代码是单个逻辑操作的一部分,那么您可以将其重构为它自己的方法/函数调用。虽然这并没有具体回答您关于使用多个问题的问题,但它会提高可读性,并提供诸如Code Complete等流行书籍中的建议。

答案 2 :(得分:2)

在幕后,所有With关键字都声明了一个引用您指定的对象的临时变量。它的引用将被编译为与完全限定对象名称完全相同的IL代码,因此不存在性能损失。您可以自己轻松完成此任务:

Dim a as MyClass = veryLongVariableName
Dim b as MyOtherClass = datasetVeryLongVariableName

a.Id = b.Id
a.Something = b.Something