List<T>.TrueForAll(Predicate<T>) 方法

定义

确定 List<T> 中的每个元素是否都与指定谓词定义的条件匹配。

C#
public bool TrueForAll (Predicate<T> match);

参数

match
Predicate<T>

用于定义检查元素时要对照条件的 Predicate<T> 委托。

返回

如果 List<T> 中的每个元素都与指定的谓词所定义的条件相匹配,则为 true;否则为 false。 如果列表没有元素,则返回值为 true

例外

matchnull

示例

下面的示例演示 TrueForAll 了 方法以及使用 Predicate<T> 泛型委托的其他几个方法。

创建的字符串包含 8 个 List<T> 恐龙名称,其中两个 (位于位置 1 和 5) 以“saurus”结尾。 该示例还定义了一个名为 EndsWithSaurus的搜索谓词方法,该方法接受字符串参数并返回一个布尔值,该值指示输入字符串是否以“saurus”结尾。

方法 TrueForAll 从头开始遍历列表,将每个元素依次 EndsWithSaurus 传递给 方法。 当方法返回 false时,EndsWithSaurus搜索将停止。

备注

在 C# 和 Visual Basic 中,无需在 Visual Basic) Predicate(Of String) 显式创建Predicate<string>委托 (。 这些语言从上下文推断出正确的委托,并自动创建它。

C#
using System;
using System.Collections.Generic;

public class Example
{
    public static void Main()
    {
        List<string> dinosaurs = new List<string>();

        dinosaurs.Add("Compsognathus");
        dinosaurs.Add("Amargasaurus");
        dinosaurs.Add("Oviraptor");
        dinosaurs.Add("Velociraptor");
        dinosaurs.Add("Deinonychus");
        dinosaurs.Add("Dilophosaurus");
        dinosaurs.Add("Gallimimus");
        dinosaurs.Add("Triceratops");

        Console.WriteLine();
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine("\nTrueForAll(EndsWithSaurus): {0}",
            dinosaurs.TrueForAll(EndsWithSaurus));

        Console.WriteLine("\nFind(EndsWithSaurus): {0}",
            dinosaurs.Find(EndsWithSaurus));

        Console.WriteLine("\nFindLast(EndsWithSaurus): {0}",
            dinosaurs.FindLast(EndsWithSaurus));

        Console.WriteLine("\nFindAll(EndsWithSaurus):");
        List<string> sublist = dinosaurs.FindAll(EndsWithSaurus);

        foreach(string dinosaur in sublist)
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine(
            "\n{0} elements removed by RemoveAll(EndsWithSaurus).",
            dinosaurs.RemoveAll(EndsWithSaurus));

        Console.WriteLine("\nList now contains:");
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine("\nExists(EndsWithSaurus): {0}",
            dinosaurs.Exists(EndsWithSaurus));
    }

    // Search predicate returns true if a string ends in "saurus".
    private static bool EndsWithSaurus(String s)
    {
        return s.ToLower().EndsWith("saurus");
    }
}

/* This code example produces the following output:

Compsognathus
Amargasaurus
Oviraptor
Velociraptor
Deinonychus
Dilophosaurus
Gallimimus
Triceratops

TrueForAll(EndsWithSaurus): False

Find(EndsWithSaurus): Amargasaurus

FindLast(EndsWithSaurus): Dilophosaurus

FindAll(EndsWithSaurus):
Amargasaurus
Dilophosaurus

2 elements removed by RemoveAll(EndsWithSaurus).

List now contains:
Compsognathus
Oviraptor
Velociraptor
Deinonychus
Gallimimus
Triceratops

Exists(EndsWithSaurus): False
 */

注解

Predicate<T>是方法的true委托,如果传递给该方法的对象与委托中定义的条件匹配,则返回 。 当前 List<T> 的元素单独传递给 Predicate<T> 委托,当委托对任何元素返回 false 时,处理将停止。 元素按顺序处理,所有调用都在单个线程上进行。

此方法是 O (n) 操作,其中 nCount

适用于

产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

另请参阅