Прочитать на английском

Поделиться через


Array.TrueForAll<T>(T[], Predicate<T>) Метод

Определение

Определяет, все ли элементы массива удовлетворяют условиям указанного предиката.

public static bool TrueForAll<T> (T[] array, Predicate<T> match);

Параметры типа

T

Тип элементов массива.

Параметры

array
T[]

Индексируемый от нуля одномерный массив Array, который необходимо проверить на соответствие условиям.

match
Predicate<T>

Предикат, определяющий условия, на соответствие которым проверяются элементы.

Возвращаемое значение

Boolean

Значение true, если каждый элемент массива array удовлетворяет условиям заданного предиката; в противном случае — значение false. Если элементы в массиве отсутствуют, возвращается значение true.

Исключения

array имеет значение null.

-или-

match имеет значение null.

Примеры

В следующем примере определяется, является ли последний символ каждого элемента в строковом массиве числом. Он создает два строковых массива. Первый массив содержит обе строки, заканчивающиеся буквами и строками, заканчивающимися числовыми символами. Второй массив состоит только из строк, заканчивающихся числовыми символами. В этом примере также определяется метод, сигнатура EndWithANumber которого соответствует делегату Predicate<T> . В этом примере каждый массив передается методу TrueForAll вместе с делегатом, представляющим EndsWithANumber метод.

using System;

public class Example
{
   public static void Main()
   {
      String[] values1 = { "Y2K", "A2000", "DC2A6", "MMXIV", "0C3" };
      String[] values2 = { "Y2", "A2000", "DC2A6", "MMXIV_0", "0C3" };

      if (Array.TrueForAll(values1, EndsWithANumber))
         Console.WriteLine("All elements end with an integer.");
      else
         Console.WriteLine("Not all elements end with an integer.");

      if (Array.TrueForAll(values2, EndsWithANumber))
         Console.WriteLine("All elements end with an integer.");
      else
         Console.WriteLine("Not all elements end with an integer.");
   }

   private static bool EndsWithANumber(string value)
   {
      int s;
      return int.TryParse(value.Substring(value.Length - 1), out s);
   }
}
// The example displays the following output:
//       Not all elements end with an integer.
//       All elements end with an integer.

Следующий пример аналогичен первому, за исключением того, что он передает массив строк методу TrueForAll вместе с лямбда-выражением, которое определяет, заканчивается ли определенный элемент массива строковым представлением числа.

using System;

public class Example
{
   public static void Main()
   {
      String[] values = { "Y2K", "A2000", "DC2A6", "MMXIV", "0C3" };
      if (Array.TrueForAll(values, value => {
                                      int s;
                                      return int.TryParse(value.Substring(value.Length - 1), out s); }
                                   ))
         Console.WriteLine("All elements end with an integer.");
      else
         Console.WriteLine("Not all elements end with an integer.");
   }
}
// The example displays the following output:
//        Not all elements end with an integer.

В обоих случаях TrueForAll метод возвращается false , как только он обнаруживает первый элемент массива, который не заканчивается числом. В противном случае возвращается true после итерации всех элементов в массиве.

Примечание

Как показано в обоих примерах, в C# и Visual Basic явно создать Predicate<string> делегат (Predicate(Of String)в Visual Basic). Эти языки определяют правильный делегат из контекста и создают его автоматически.

Комментарии

Это Predicate<T> делегат метода, который возвращаетtrue , если объект, переданный ему, соответствует условиям, определенным в делегате. Элементы передаются в отдельный array Predicate<T>объект, и обработка останавливается при возврате false делегата для любого элемента.

Этот метод является операцией O(n), где n находится Length .array

Применяется к

См. также раздел