Некоторые языки, такие как Visual Basic, давно имеют специальные операторы для итерации массивов и наборов. В С# тоже есть такая конструкция — оператор
foreach:
foreach
(тип
in
выражение) встроенный _оператор
class MyArray
<
public ArrayList words;
public MyArrayO {
words = new ArrayListO;
words.Add("foo");
words.Add("bar");
words.Add("baz"); } }
Познакомившись с итерационными операторами, вы понимаете, что пройти по массиву можно по-разному. Но для большинства Java- и С++-программистов наиболее логичным будет такой способ:
using System;
using System.Collections;
class MyArray
{
public ArrayList words;
public MyArrayO {
words = new ArrayListQ;
words.Add("foo");
words.Add("bar");
words.Add("baz"); } }
class ForeacMApp {
public static void Nain()
{
HyArray myArray = new MyArrayO;
for (int 1=0; i < myArray.words.Count; i++) {
Console.WriteLine("{0}", myArray.wordsfi]); } > }
Но такой подход обременен потенциальными проблемами:
Источников потенциальных проблем масса. Используя оператор
foreach,
этих проблем можно избежать и единообразно производить итерацию наборов и массивов. С оператором
foreach
предыдущий пример можно переписать так:
using System;
using System.Collections;
class MyArray
{
public ArrayList words;
public MyArrayO {
words = new ArrayListO;
words.Add("foo");
words.Add("bar");
words.Add("baz"); } }
class Foreach2App
{
public static void Main()
{
MyArray myArray = new MyArrayO;
foreach (string word in myArray.words)
{
Console.WriteLine("{0>", word);
} } }
Насколько понятней оператор
foreaM
Вы гарантированно получите каждый элемент, поскольку вам не потребуется вручную устанавливать цикл и запрашивать счетчик, а оператор, содержащийся в цикле, автоматически поместит элемент в указанную вами переменную — достаточно лишь сослаться на нее в этом операторе.