Добавить в цитаты Настройки чтения

Страница 80 из 502

<b>Значение элемента равно: 10 </b>

<b>Значение элемента равно: 3 </b>

<b>Значение элемента равно: 6</b>

<b>Значение элемента равно: 9 </b>

<b>Значение элемента равно: 12 </b>

<b>Значение элемента равно: 15 </b>

<b>Сумма равна: 90</b>

Оператор foreach допускает циклическое обращение к массиву только в определенном порядке: от начала и до конца массива, поэтому его применение кажется, на первый взгляд, ограниченным. Но на самом деле это не так. В большом числе алгоритмов, самым распространенным из которых является алгоритм поиска, требуется именно такой механизм. В качестве примера ниже приведена программа, в которой цикл foreach используется для поиска в массиве определенного значения. Как только это значение будет найдено, цикл прервется.

<b>// Поиск в массиве с помощью оператора цикла foreach.</b>

<b>using System;</b>

<b>class Search {</b>

<b>  static void Main() {</b>

<b>    int[] nums = new </b><b>int [10]; </b>

<b>    int val;</b>

<b>    bool found = false;</b>

<b>    // Задать первоначальные значения элементов массива nums. </b>

<b>    for (int i = 0; i &lt; 10; i++) </b>

<b>      nums[i] = i;</b>

<b>    val = 5;</b>

<b>    // Использовать цикл foreach для поиска заданного </b>

<b>    // значения в массиве nums. </b>

<b>    foreach(int x in nums) { </b>

<b>      if(x == val) {</b>

<b>        found = true; </b>

<b>        break;</b>

<b>      }</b>

<b>    }</b>

<b>    if(found)</b>

<b>      Console.WriteLine(&quot;Значение найдено!&quot;);</b>

<b>  }</b>

<b>}</b>

При выполнении этой программы получается следующий результат.

<b>Значение найдено!</b>

Оператор цикла foreach отлично подходит для такого применения, поскольку при поиске в массиве приходится анализировать каждый его элемент. К другим примерам применения оператора цикла foreach относится вычисление среднего, поиск минимального или максимального значения среди ряда заданных значений, обнаружение дубликатов и т.д. Как будет показано далее в этой книге, оператор цикла foreach оказывается особенно полезным для работы с разными типами коллекций.

Строки

С точки зрения регулярного программирования строковый тип данных string относится к числу самых важных в С#. Этот тип определяет и поддерживает символьные строки. В целом ряде других языков программирования строка представляет собой массив символов. А в C# строки являются объектами. Следовательно, тип string относится к числу ссылочных. И хотя string является встроенным в C# типом данных, его рассмотрение пришлось отложить до тех пор, пока не были представлены классы и объекты.

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

<b>Console.WriteLine(&quot;В C# строки являются объектами.&quot;);</b>

текстовая строка "В C# строки являются объектами." автоматически преобразуется в строковый объект средствами С#. Следовательно, применение класса типа string происходило в предыдущих примерах программ неявным образом. А в этом разделе будет показано, как обращаться со строками явным образом.

Самый простой способ построить символьную строку — воспользоваться строковым литералом. Например, в следующей строке кода переменной ссылки на строку str присваивается ссылка на строковый литерал.

<b>string str = &quot;Строки в C# весьма эффективны.&quot;;</b>

В данном случае переменная str инициализируется последовательностью символов "Строки в C# весьма эффективны.".

Объект типа string можно также создать из массива типа char. Например:

<b>char[] charray = {'t', 'е', 's', 't'};</b>

<b>string str = new string(charray);</b>

Как только объект типа string будет создан, его можно использовать везде, где только требуется строка текста, заключенного в кавычки. Как показано в приведенном ниже примере программы, объект типа string может служить в качестве аргумента при вызове метода WriteLine().

<b>// Создать и вывести символьную строку.</b>

<b>using System;</b>

<b>class StringDemo { </b>

<b>  static void Main() {</b>

<b>    char[] charray ={'Э','т','o',' ','с','т','p','o','к','a',</b>

<sup>              '.'</sup>} ;