VB.NET’With’语句 – 拥抱还是避免?

在工作中,我经常在项目中工作,其中许多属性的某些对象必须在建设期间或早期在其一生中设置。为了方便和可读性,我经常使用With语句来设置这些属性。我发现
With Me.Elements
    .PropertyA = True
    .PropertyB = "Inactive"
    ' And so on for several more lines
End With

看起来好多了

Me.Elements.PropertyA = True
Me.Elements.PropertyB = "Inactive"
' And so on for several more lines

对于非常长的语句,只是设置属性

我注意到使用时有一些问题调试时;然而,我想知道是否有任何令人信服的理由,以避免在实践中使用?我一直认为通过编译器生成代码上面两种情况基本上是一样的,这就是为什么我一直选择写我感觉更可读。

如果您有长的可变名称,最终会出现:
UserHandler.GetUser.First.User.FirstName="Stefan"
UserHandler.GetUser.First.User.LastName="Karlsson"
UserHandler.GetUser.First.User.Age="39"
UserHandler.GetUser.First.User.Sex="Male"
UserHandler.GetUser.First.User.Occupation="Programmer"
UserHandler.GetUser.First.User.UserID="0"
....and so on

然后我将使用WITH,使其更加可读:

With UserHandler.GetUser.First.User
    .FirstName="Stefan"
    .LastName="Karlsson"
    .Age="39"
    .Sex="Male"
    .Occupation="Programmer"
    .UserID="0"
end with

在后面的示例中,与第一个示例相比甚至有性能优势,因为在第一个示例中,Im每次访问用户属性时都提取用户,而在WITH的情况下,我只提取用户一次。

我可以获得性能增益,而不使用,像这样:

dim myuser as user =UserHandler.GetUser.First.User
myuser.FirstName="Stefan"
myuser.LastName="Karlsson"
myuser.Age="39"
myuser.Sex="Male"
myuser.Occupation="Programmer"
myuser.UserID="0"

但我会去WITH语句,而不是,它看起来更干净。

我只是把它作为一个例子,所以不要抱怨一个类有很多关键字,另一个例子可能是像这样:WITH refundDialog.refundDatagridView.SelectedRows(0)

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...