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

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

<b>    // Обратить весь массив.</b>

<b>    Array.Reverse(nums);</b>

<b>    // Отобразить обратный порядок следования.</b>

<b>    Console.Write(&quot;Обратный порядок следования: &quot;);</b>

<b>    foreach(int i in nums)</b>

<b>      Console.Write (i + &quot; &quot;);</b>

<b>    Console.WriteLine();</b>

<b>    // Обратить часть массива.</b>

<b>    Array.Reverse(nums, 1, 3);</b>

<b>    // Отобразить обратный порядок следования.</b>

<b>    Console.Write(&quot;Частично обращенный порядок следования: &quot;);</b>

<b>    foreach(int i in nums)</b>

<b>      Console.Write(i + &quot; &quot;);</b>

<b>    Console.WriteLine();</b>

<b>  }</b>

<b>}</b>

Эта программа дает следующий результат.

<b>Исходный порядок следования: 1 2 3 4 5</b>

<b>Обратный порядок следования: 5 4 3 2 1</b>

<b>Частично обращенный порядок следования: 5 2 3 4 1</b>

Полное или частичное копирование одного массива в другой — это еще одна весьма распространенная операция с массивами. Для копирования содержимого массива служит метод Сору(). В зависимости от его варианта копирование элементов исходного массива осуществляется в начало или в средину целевого массива. Применение метода Сору() демонстрируется в приведенном ниже примере программы.

<b>// Скопировать массив.</b>

<b>using System;</b>

<b>class CopyDemo {</b>

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

<b>    int[] source = { 1, 2, 3, 4, 5 };</b>

<b>    int[] target = { 11, 12, 13, 14, 15 };</b>

<b>    int[] source2 = { -1, -2, -3, -4, -5 };</b>

<b>    // Отобразить исходный массив.</b>

<b>    Console.Write(&quot;Исходный массив: &quot;);</b>

<b>    foreach (int i in source)</b>

<b>      Console.Write(i + &quot; &quot;);</b>

<b>    Console.WriteLine();</b>

<b>    // Отобразить исходное содержимое целевого массива.</b>

<b>    Console.Write(&quot;Исходное содержимое целевого массива: &quot;);</b>

<b>    foreach (int i in target)</b>

<b>      Console.Write(i +&quot; &quot;);</b>

<b>    Console.WriteLine();</b>

<b>    // Скопировать весь массив.</b>

<b>    Array.Copy(source, target, source.Length);</b>

<b>    // Отобразить копию.</b>

<b>    Console.Write(&quot;Целевой массив после копирования: &quot;);</b>

<b>    foreach (int i in target)</b>

<b>      Console.Write(i + &quot; &quot;);</b>

<b>    Console.WriteLine();</b>

<b>    // Скопировать в средину целевого массива.</b>

<b>    Array.Copy(source2, 2, target, 3, 2);</b>

<b>    // Отобразить копию.</b>

<b>    Console.Write(&quot;Целевой массив после частичного копирования: &quot;);</b>

<b>    foreach (int i in target)</b>

<b>      Console.Write(i + &quot; &quot;);</b>

<b>    Console.WriteLine();</b>

<b>  }</b>

<b>}</b>

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

<b>Исходный массив: 1 2 3 4 5</b>

<b>Исходное содержимое целевого массива: 11 12 13 14 15</b>

<b>Целевой массив после копирования: 1 2 3 4 5</b>

<b>Целевой массив после частичного копирования: 1 2 3 -3 -4</b>

Предикат представляет собой делегат типа System.Predicate, возвращающий логическое значение true или false в зависимости от некоторого условия. Он объявляется следующим образом.

<b>public delegate bool Predicate&lt;T&gt; (T obj)</b>

Объект, проверяемый по заданному условию, передается в качестве параметра obj. Если объект obj удовлетворяет заданному условию, то предикат должен возвратить логическое значение true, в противном случае — логическое значение false. Предикаты используются в ряде методов класса Array, включая: Exists(), Find(), Findlndex() и FindAll().