【问题标题】:Nested WITH blocks [duplicate]嵌套 WITH 块 [重复]
【发布时间】:2020-04-04 09:19:59
【问题描述】:

如何访问外部 WITH 块?

With New Object() {1, 2}
    Dim debug_1 As Object = .ToArray(0) 'Ok - got 1 from object
    With New Object() {3, 4}
         Dim debug_2 As Object = .ToArray(0)  'Got 3
         'How get 2 from WITH block Object() {1, 2}?
         '>>>
    End With
End With

【问题讨论】:

  • 这不是解决方案。这是附加变量的替代和声明:)
  • 那么,如果语言不支持您的要求,您希望解决方案是什么?
  • 嵌套With 语句仅在第二个With 语句中使用的表达式以点开头并扩展第一个With 语句中使用的表达式时才有效。就是这样,就是这样。

标签: vb.net


【解决方案1】:

你不能。改为声明一个变量,它会使代码更具可读性

Dim x = New Object() {1, 2}
Dim debug_1  = x(0) 'Ok - got 1 from object
Dim y = New Object() {3, 4}
Dim debug_2 As y(0)  'Got 3

'How get 2 from WITH block Object() {1, 2}?
x(1)

没有缩进,不用怀疑“这行代码的前导点是第一个对象还是第二个、第三个、第四个...”多重嵌套 With 是可读代码的严重障碍,应该避免

【讨论】:

  • 这与 dup 的答案有何不同?
  • 我用的是手机网站;在我写这个答案的时候,没有重复。链接的副本仍然具有 With 并且它在已作为变量引用存在的项目上具有 With'd。 OP的问题没有类似的特点
  • Dim x dim y - 巧妙:))
  • 是的,我选择了类似的描述性、自我记录的名称,可能适合示例对象:)
【解决方案2】:

解决方案;)

With New Object() {1, 2}    
    With New Object() {3, 4}.Concat(.ToArray)
         Dim debug_0 As Object = .ToArray(3)  'Got 2
    End With
End With

【讨论】:

    猜你喜欢
    • 2015-10-23
    • 1970-01-01
    • 2021-08-29
    • 2016-05-18
    • 2016-01-29
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    相关资源
    最近更新 更多