Как получить данные из списка без использования итератора в c # - PullRequest
1 голос
/ 08 марта 2011

У меня есть список, содержащий набор строк, я хочу получить данные, присутствующие в списке, на основе индекса, без использования итератора. Есть ли такие функции, как get () или getat (), какой-то метод, использующий который мы можем получить?

Ответы [ 8 ]

7 голосов
/ 08 марта 2011

myList [index] - это путь

List<string> myList = new List<string>();
myList.Add("string 1");
myList.Add("String 2");

Console.WriteLine(myList[0]); // string 1
Console.WriteLine(myList[1]); // String 2
6 голосов
/ 08 марта 2011
List<string> myList = new List<string();
//add some elements to the list
//then get the third element
string thirdElement = myList[2];
1 голос
/ 08 марта 2011

Используйте перегруженный индексный оператор.

List<String> list; // ... initialize, populate list
String element = list[1]; // get the element at index 1
1 голос
/ 08 марта 2011

Вы можете просто сделать:

item = list[i];
0 голосов
/ 08 марта 2011

Если вы используете универсальный тип Список (или другую реализацию IList ), вы можете использовать оператор индекса для прямого доступа к элементам в определенных позициях: item = myList[3]

Если вы используете тип, который реализует только IEnumerable , вам следует использовать функцию ElementAt().

По какой причине вы избегаете использования итераторов?

0 голосов
/ 08 марта 2011
List<string> list = new List<string>();
list.Add("lots of strings");

//If you want to print all the strings you can do:
foreach(string str in list)
   Console.WriteLine(str);

//If you want to modify each string in the list, make each lower case for example, 
// you can do. this is working by using the index of the elements in the list:
for(int i = 0; i < list.Count; i++)
   list[i] = list[i].ToLower();
0 голосов
/ 08 марта 2011

Я не знаю, о каком именно списке вы говорите, но большинство коллекций в .net имеют функцию CopyTo, и вы можете получить доступ к отдельным элементам с помощью оператора [].

0 голосов
/ 08 марта 2011

Если ваша коллекция реализует IList<T>, просто используйте индексатор. В противном случае, если ваша коллекция разрешает только прямой доступ (то есть реализует только IEnumerable<T>), вы можете использовать метод ElementAt(), но он все еще использует итератор под капотом.

...