Что такое эквивалент C для Java "for (String currLine: allLines)"? - PullRequest
1 голос
/ 24 сентября 2010

У меня есть некоторый Java-код следующего содержания:

Vector<String> allLines = new Vector<String>();
allLines.add("line 1");
allLines.add("line 2");
allLines.add("line 3");
for (String currLine: allLines) { ... }

По сути, он считывает большой файл в вектор строк, а затем обрабатывает его по одному (я помещаю все это в память, так как я делаю многопроходный компилятор).

Какой эквивалентный способ сделать это с C #? Я предполагаю, что здесь мне не нужно возвращаться к использованию индексной переменной.


На самом деле, чтобы уточнить, я прошу эквивалент целого блока кода выше, а не просто цикл for.

Ответы [ 6 ]

6 голосов
/ 24 сентября 2010

Это будет конструкция foreach. По сути, он способен извлечь IEnumerable из предоставленного аргумента и сохранит все его значения в предоставленной переменной.

foreach( var curLine in allLines ) {
  ...
}
5 голосов
/ 24 сентября 2010

List<string> может быть получен по индексу и автоматически изменяет размер, как Vector.

Итак:

List<string> allLines = new List<string>();
allLines.Add("line 1");
allLines.Add("line 2");
allLines.Add("line 3");
foreach (string currLine in allLines) { ... }
1 голос
/ 24 сентября 2010

Я думаю, это

foreach (string currLine in allLines)
{
   ...
}
0 голосов
/ 24 сентября 2010

Похоже, что Vector - это простой список, поэтому это будет эквивалент c #

List<string> allLines = new List<string>();
allLines.add("line 1");
allLines.add("line 2");
allLines.add("line 3");
foreach (string currLine in allLines) { ... }
0 голосов
/ 24 сентября 2010
List<string> allLines = new List<string>
{
    "line 1",
    "line 2",
    "line 3",
};
foreach (string currLine in allLines) { ... } 
0 голосов
/ 24 сентября 2010

foreach(string currLine in allLines) { ... }

...