家居网站应该怎么做,企业网页设计方案,扫码进入网站 怎么做,网站名称及网址译文链接#xff1a;https://www.infoworld.com/article/3057152/how-to-work-with-action-func-and-predicate-delegates-in-csharp.html?nsdrtrue委托是一个类型安全的函数指针#xff0c;它可以引用与委托具有相同签名的方法。委托常用于实现回调方法或者事件机制#x… 译文链接https://www.infoworld.com/article/3057152/how-to-work-with-action-func-and-predicate-delegates-in-csharp.html?nsdrtrue委托是一个类型安全的函数指针它可以引用与委托具有相同签名的方法。委托常用于实现回调方法或者事件机制在C#中一般用 delegate 关键字声明。你可以声明一个和类平级的委托也可以嵌套在类中。Func 和 Action 是什么如何使用 两者最基本的区别是前者适合那些需要带返回值的委托后者适合那些不带返回值的委托。Func 所引用的方法接收一个或者多个入参并带有一个返回值Action所引用的方法接收一个或者多个参数并且没有返回值换句话说你的委托所引用的方法没有返回值这时候适合用 Action。Predicate所引用的方法接收一个或者多个泛型参数并且返回一个 bool 值你可以假定它等价于 FuncT,boolPredicate 常用于对 collection 进行一组条件检索。C# 中使用 Action 你可以使用 委托 去实现事件和回调方法C#委托非常类似于C中的函数指针但是 C# 中的 委托 是类型安全的你可以将方法作为参数传递给委托从而让委托指向该方法。下面的代码片段展示了 Action 委托的语法结构。
ActionTParameter接下来的代码清单展示了如何使用 Action 委托当下面的代码执行结束后会在控制台打印 Hello !!!。 static void Main(string[] args){Actionstring action new Actionstring(Display);action(Hello!!!);Console.Read();}static void Display(string message){Console.WriteLine(message);}C# 中使用 Func 现在我们一起学习下 Func 委托下面是 Func 的语法结构。
FuncTParameter, TOutput接下来的代码片段展示了如何在 C# 中使用 Func 委托最终方法会打印出 Hra(基本薪资的 40%) 的值基本薪资是作为参数传下去的如下代码所示static void Main(string[] args){Funcint, double func new Funcint, double(CalculateHra);Console.WriteLine(func(50000));Console.Read();}static double CalculateHra(int basic){return (double)(basic * .4);}值得注意的是Func 委托的第二个参数表示方法的返回值在上面这个例子中它就是计算后的 Hra 值作为 double 型返回。C# 中使用 Predicate Predicate 委托常用于检索 collection下面是 Predicate 的语法结构。PredicateT
值得注意的是, PredicateT 差不多等价于 FuncT,bool。考虑下面的 Customer 实体类。class Customer{public int Id { get; set; }public string FirstName { get; set; }public string LastName { get; set; }public string Address { get; set; }public string City { get; set; }public string State { get; set; }public string Country { get; set; }}接下来生成一个 customer 集合并且丢一些数据进去如下代码ListCustomer custList new ListCustomer();custList.Add(new Customer { Id 1, FirstName Joydip, LastName Kanjilal, State Telengana, City Hyderabad, Address Begumpet, Country India });custList.Add(new Customer { Id 2, FirstName Steve, LastName Jones, State OA, City New York, Address Lake Avenue, Country US });接下来是完整的代码片段展示了如何使用 Predicate 去检索集合。static void Main(string[] args){ListCustomer custList new ListCustomer();custList.Add(new Customer { Id 1, FirstName Joydip, LastName Kanjilal, State Telengana, City Hyderabad, Address Begumpet, Country India });custList.Add(new Customer { Id 2, FirstName Steve, LastName Jones, State OA, City New York, Address Lake Avenue, Country US });PredicateCustomer hydCustomers x x.Id 1;Customer customer custList.Find(hydCustomers);Console.WriteLine(customer.FirstName);Console.Read();}当上面的代码被成功执行 控制台将会输出 Joydip 。