2014-04-24 2 views
1

Я почти переключился на общие типы и от типов массивов, но время от времени мне нужно перебирать что-то, где удобно иметь индексы, подобные этим массивам. Родовые списки велики, потому что они сохраняют порядок вещей внутри, так же как и порядок вставленных вещей, они динамически растут и поставляются с очень полезными методами, но я могу прыгать, как я могу, с массивами? Могу ли я сказать, перечислить общий список, используя цикл for, и на определенных индексах получить значение прошлых или будущих индексов без необходимости перебирать все значения между ними?Итерирование общего списка с использованием индексов (C#)

Пример использования массива:

for (int i = 50; i != 0; --i) 
{ 
    if (myArray[i] == 1 && i + 5 <= 50) 
    { 
     myArray[i + 5] = myArray[i + 5] + 2; 
    } 
} 

ответ

3

Да, вы можете сделать это с помощью списка так же, как массивы. В списке есть индексы, которые действуют аналогично индексу индекса. Вы попробовали, и это не сработало?

var lists = Enumerable.Range(0, 51).ToList(); 
for (var i = 50; i != 0; --i) 
{ 
    if (lists[i] == 1 && i + 5 <= 50) 
    { 
     lists[i + 5] = lists[i + 5] + 2; 
    } 
} 
+0

Я не пробовал, потому что я понятия не имел, что это возможно. До сих пор у меня есть только списки, выпущенные заранее, и до сих пор этого было достаточно. Итак, общие списки имеют одинаковые ограничения по размеру (Int32.MaxValue)? – HelloWorld

+0

Это правильно – CharlesNRice

+0

Могу ли я достичь этого без использования пространства имен System.Linq? Похоже, что это должно быть в пространстве имен System.Collections.Generic. Я не использую ни один из типов в System.Core.dll, поэтому кажется, что это пустая трата, чтобы загрузить ее только для этой цели. – HelloWorld

Смежные вопросы