vb.net для каждого цикла - PullRequest
1 голос
/ 24 июля 2010

Я бы хотел пройтись по двум спискам, используя для каждого цикла.

dim data as list(of pointpairlist)
For each recLine in records
    For Each chan In recLine.channels and d in data
      d.add( func(chan) )
    Next
next

примечание: каждая строка записи имеет одну выборку из каждого записанного канала. т.е. каждая строка записи представляет собой срез из 32 записей датчика. Я хочу создать список точек данных x, y для каждого канала (ось x является общей для всех каналов)

Есть ли способ сделать это похожим на то, что у меня есть выше (избегая индексации переменных)

Ответы [ 2 ]

2 голосов
/ 24 июля 2010

Вложите петли. Я не могу перепроектировать реальные объявления из фрагмента, но что-то вроде этого:

    Dim data As List(Of PointPairList)
    ''...
    For Each point In data
        For Each chan In point.recLine
            func(chan)
        Next
    Next
2 голосов
/ 24 июля 2010

Лучший способ перебрать две разные коллекции в одном цикле - использовать индексаторы.

For index As Integer = 0 To recLine.channels.Count - 1
    data(index) = func(chan(index))
Next

Как комментарии @ 0xA3, вы также можете использовать цикл while, вызывая GetEnumerator, MoveNext и Current непосредственно для каждой коллекции, но это ничего не дает.

Я понимаю, что вы хотите избегать использования индексаторов, но нет простой языковой поддержки для чего-либо еще.

Это касается и C #.

Почему вам нужно избегать индексаторов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...