Console.Write(i + ' ');

Console.WriteLine();

}

}

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

Исходный массив: 12 3 4 5

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

Целевой массив после копирования: 12 3 4 5

Целевой массив после частичного копирования: 12 3-3-4

Применение предиката

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

public delegate bool Predicate<T> (T obj)

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

В приведенном ниже примере программы демонстрируется применение предиката с целью определить, содержится ли в целочисленном массиве отрицательное значение. Если такое значение обнаруживается, то данная программа извлекает первое отрицательное значение, найденное в массиве. Для этого в ней используются методы Exists() и Find().

class PredDemo {

// Предикатный метод, возвращающий логическое значение true,

// если значение переменной v оказывается отрицательным, static bool IsNeg(int v) { if (v < 0) return true; return false;

}

static void Main() {

int[] nums = { 1, 4, -1, 5, -9 };

Console.Write('Содержимое массива nums: '); foreach(int i in nums)

Console.Write (i + ' ');

Console.WriteLine();

// Сначала проверить, содержит ли массив nums отрицательное значение, if(Array.Exists(nums, PredDemo.IsNeg)) {

Console.WriteLine('Массив nums содержит отрицательное значение.');

// Затем найти первое отрицательное значение' в массиве, int х = Array.Find(nums, PredDemo.IsNeg);

Console.WriteLine('Первое отрицательное значение: ' + x);

}

else

Console.WriteLine('В массиве nums отсутствуют отрицательные значения.');

}

}

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

Содержимое массива nums: 14-15-9 Массив nums содержит отрицательное значение.

Первое отрицательное значение: -1

В данном примере программы в качестве предиката методам Exists () и Find () передается метод IsNeg (). Обратите внимание на следующее объявление метода IsNeg().

static bool IsNeg (int v) {

Методы Exists () и Find () автоматически и по порядку передают элементы массива переменной v. Следовательно, после каждого вызова метода IsNeg () переменная v будет содержать следующий элемент массива.

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату