C#中的Action、Func和Predicate是三个常用的委托类型,它们分别表示参数列表不同的无返回值、有返回值、返回布尔值的委托。
Action
Action
是一个表示参数类型为void的无返回值委托类型。可以定义最多16个输入参数的Action,用法如下:
// 定义一个无参数的Action
Action action1 = () => Console.WriteLine("Hello World!");
// 定义一个带有一个int类型参数的Action
Action<int> action2 = (x) => Console.WriteLine(x);
// 定义一个带有两个参数的Action
Action<string, int> action3 = (s, i) => Console.WriteLine($"{s}: {i}");
上面的例子分别创建了无参、带一个int参数、带有一个string参数和一个int参数的Action。在调用Action时,可以传递相应数量的参数,例如:
action1(); // 将输出 "Hello World!"
action2(123); // 将输出 123
action3("Age", 20); // 将输出 "Age: 20"
Func
Func
是一个表示委托带有返回值的类型,其最后一个类型参数代表返回值类型。可以定义最多16个输入参数的Func,用法如下:
// 定义一个带两个参数且返回值为string类型的Func
Func<int, int, string> func1 = (x, y) => $"{x} + {y} = {x + y}";
// 定义一个无参数且返回值为bool类型的Func
Func<bool> func2 = () => DateTime.Now.Second % 2 == 0;
上面的例子分别创建了一个带有两个int类型的参数并返回string类型的Func,以及一个无参并返回bool类型的Func。在调用Func时,可以根据之前定义的参数列表传递相应数量的参数,例如:
Console.WriteLine(func1(5, 2)); // 将输出 "5 + 2 = 7"
Console.WriteLine(func2()); // 将输出 true 或者 false
Predicate
Predicate
是一个表示委托带有一个输入参数,并返回布尔值类型的类型。用法如下:
// 定义一个带有int类型参数并返回bool类型的Predicate
Predicate<int> predicate = (x) => x % 2 == 0;
上面的例子创建了一个带有int类型的参数并返回bool类型的Predicate,其判断是否为偶数。调用Predicate时,传递相应类型参数即可获得相应的返回值,例如:
Console.WriteLine(predicate(5)); // 将输出 false
Console.WriteLine(predicate(6)); // 将输出 true
以上就是C#中Action、Func和Predicate的完整攻略,希望可以帮助到你。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中的Action、Func和Predicate如何使用 - Python技术站