Страница 364 из 502
<b> // Обратить весь массив.</b>
<b> Array.Reverse(nums);</b>
<b> // Отобразить обратный порядок следования.</b>
<b> Console.Write("Обратный порядок следования: ");</b>
<b> foreach(int i in nums)</b>
<b> Console.Write (i + " ");</b>
<b> Console.WriteLine();</b>
<b> // Обратить часть массива.</b>
<b> Array.Reverse(nums, 1, 3);</b>
<b> // Отобразить обратный порядок следования.</b>
<b> Console.Write("Частично обращенный порядок следования: ");</b>
<b> foreach(int i in nums)</b>
<b> Console.Write(i + " ");</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("Исходный массив: ");</b>
<b> foreach (int i in source)</b>
<b> Console.Write(i + " ");</b>
<b> Console.WriteLine();</b>
<b> // Отобразить исходное содержимое целевого массива.</b>
<b> Console.Write("Исходное содержимое целевого массива: ");</b>
<b> foreach (int i in target)</b>
<b> Console.Write(i +" ");</b>
<b> Console.WriteLine();</b>
<b> // Скопировать весь массив.</b>
<b> Array.Copy(source, target, source.Length);</b>
<b> // Отобразить копию.</b>
<b> Console.Write("Целевой массив после копирования: ");</b>
<b> foreach (int i in target)</b>
<b> Console.Write(i + " ");</b>
<b> Console.WriteLine();</b>
<b> // Скопировать в средину целевого массива.</b>
<b> Array.Copy(source2, 2, target, 3, 2);</b>
<b> // Отобразить копию.</b>
<b> Console.Write("Целевой массив после частичного копирования: ");</b>
<b> foreach (int i in target)</b>
<b> Console.Write(i + " ");</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<T> (T obj)</b>
Объект, проверяемый по заданному условию, передается в качестве параметра obj. Если объект obj удовлетворяет заданному условию, то предикат должен возвратить логическое значение true, в противном случае — логическое значение false. Предикаты используются в ряде методов класса Array, включая: Exists(), Find(), Findlndex() и FindAll().