【问题标题】:VB.Net - Looking for Design Pattern - For Each Instead of For with indexVB.Net - 寻找设计模式 - For Each 而不是 For with index
【发布时间】:2012-06-08 14:17:26
【问题描述】:

使用 VB.Net,我正在寻找处理以下成语的最佳实践:

For i as Integer = 0 To o1.Count - 1
  o1(i).x = o2(i).x
Next

我真正想要的是 VB.Net 不提供的东西—— For Each 语句上的附加和同时迭代器。

For Each m1 As c1 In o1, m2 As c2 In o2
  m1.x = m2.x
Next

我对 Linq 和非 Linq 的建议、关于 Copy 方法设计的 cmets、与 C# 或其他语言的比较感兴趣。

【问题讨论】:

  • 您想要实现的是For-loop 的完美示例。您想修改集合,并希望通过索引访问它们。
  • 你在讨论的是一个成语,而不是设计模式,顺便说一句:)
  • 我想补充一下,为什么你说使用for循环是一种不好的做法???
  • 我同意 for 循环非常适合这个。其他解决方案不会像这样干净。
  • 确实成语是一个更好的词:en.wikipedia.org/wiki/Programming_idiom

标签: vb.net for-loop foreach indexing each


【解决方案1】:

我确定您的实际情况比您展示的示例更复杂,但我认为值得一提的是,如果您所做的只是试图将整个项目列表从一个列表复制到另一个列表,你可以简单地做这样的事情:

Dim list2 = New List(Of Object)(list1)

【讨论】:

    【解决方案2】:

    我不完全确定您要对此做什么。如果您详细说明您的问题,我们可能会为您提供更好的帮助。

    如果两个列表的类型相同,您可以将一个列表附加到另一个列表中,然后在一个列表中为每个列表使用 a。

    【讨论】:

      【解决方案3】:

      我提交了扩展 For Each 语句以实现额外的同时迭代器的请求。

      http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2923571-allow-additional-clauses-on-for-each-similar-to-c-

      我仍然对其他解决方案感兴趣,但在那之前,这就是答案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-02
        • 2016-07-06
        • 2015-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多