📜  C#|谓词委托(1)

📅  最后修改于: 2023-12-03 15:14:30.373000             🧑  作者: Mango

C# | 谓词委托

概述

在C#中,谓词委托是一种特殊类型的委托,它表示一个接受一个参数并返回一个布尔值的方法。

谓词委托被广泛用于集合与数组中的元素筛选。它允许您将条件逻辑封装在一个方法中,并用它来过滤集合中的元素。

委托类型

在C#中,谓词委托的类型是 Predicate<T><T>是委托的输入参数类型。Predicate委托的定义如下:

public delegate bool Predicate<in T>(T obj)

在Predicat委托中,参数obj是集合或数组中的元素。

使用谓词委托筛选数组中的元素

以下代码演示如何使用谓词委托来筛选数组中的元素。

class Program 
{
    static void Main(string[] args)
    {
        int[] numbers = {1, -2, 3, -4, 5};

        // 使用谓词委托筛选正数
        int[] positiveNumbers = Array.FindAll(numbers, x => x > 0);

        // 输出筛选出的正数
        Console.WriteLine("Positive numbers:");
        foreach (int number in positiveNumbers)
        {
            Console.WriteLine(number);
        }
    }
}

输出结果:

Positive numbers:
1
3
5

在上面的代码中,我们使用 Array.FindAll() 方法来筛选数组中的元素。 FindAll() 方法将谓词委托作为参数传递,谓词委托定义了筛选条件。这里,我们使用 x => x > 0 作为谓词委托,表示筛选出数组中大于0的元素。

使用谓词委托筛选集合中的元素

以下代码演示如何使用谓词委托来筛选List集合中的元素。

class Program 
{
    static void Main(string[] args)
    {
        List<int> numbers = new List<int> {1, -2, 3, -4, 5};

        // 使用谓词委托筛选正数
        List<int> positiveNumbers = numbers.FindAll(x => x > 0);

        // 输出筛选出的正数
        Console.WriteLine("Positive numbers:");
        foreach (int number in positiveNumbers)
        {
            Console.WriteLine(number);
        }
    }
}

输出结果:

Positive numbers:
1
3
5

在上面的代码中,我们使用 List<T>.FindAll() 方法来筛选List集合中的元素。 FindAll() 方法将谓词委托作为参数传递,谓词委托定义了筛选条件。这里,我们使用 x => x > 0 作为谓词委托,表示筛选出集合中大于0的元素。

总结

谓词委托是C#中一种特殊类型的委托,它表示一个接受一个参数并返回一个布尔值的方法。谓词委托被广泛用于集合与数组中的元素筛选。使用谓词委托可以将条件逻辑封装在一个方法中,并用它来过滤集合中的元素。