简体   繁体   中英

What's the C# equivalent of Java's “for (String currLine: allLines)”?

I've got some Java code along the lines of:

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

Basically, it reads a big file into a lines vector then processes it one at a time (I bring it all in to memory since I'm doing a multi-pass compiler).

What's the equivalent way of doing this with C#? I'm assuming here I won't need to revert to using an index variable.


Actually, to clarify, I'm asking for the equivalent of the whole code block above, not just the for loop.

That would be the foreach construct. Basically it is capable to extract an IEnumerable from the supplied argument, and will store all of it's values into the supplied variable.

foreach( var curLine in allLines ) {
  ...
}

List<string> can be accessed by index and resizes automatically like Vector.

So:

List<string> allLines = new List<string>();
allLines.Add("line 1");
allLines.Add("line 2");
allLines.Add("line 3");
foreach (string currLine in allLines) { ... }

I guess it's

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

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

List<string> allLines = new List<string>
{
    "line 1",
    "line 2",
    "line 3",
};
foreach (string currLine in allLines) { ... } 

It looks like Vector is just a simple list, so this would be the c# equivalent

List<string> allLines = new List<string>();
allLines.add("line 1");
allLines.add("line 2");
allLines.add("line 3");
foreach (string currLine in allLines) { ... }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM