c#中Func <T>的优点?

 平凡洗护店 发布于 2023-02-14 01:46

我在C#中寻找Func方法我不确定与普通方法相比有什么优势.

功能方法

Func multiply = delegate(int a, int b, int c) { return a * b * c; };
Console.WriteLine(multiply(2, 3, 4)); 

正常的方法

long multiply (int a , int b , int c)
{
 return a*b*c;
}

可以解释一下吗?

2 个回答
  • 如果要使用任意方法但仍满足签名,则使用委托.一个很好的例子是LINQ方法,例如Where:

    Where<T>(Func<T, bool> condition)
    

    对于该方法,究竟condition是什么并不重要.

    带签名的任何方法(或lambda表达式):

    bool Condition<T>(T argument)
    

    可以用来代替条件.最后一个类型参数用于Func<>指定返回类型.如果您想要一个具有void返回类型的委托,请使用Action<>.

    2023-02-14 02:17 回答
  • Func<> 是一个多用途委托,这意味着它是一种指向函数的“指针”,而不是函数本身。

    一个优点是可以将此指针作为另一个函数的参数来使用

    非常人为的例子:

    public double Execute(Func<double,double,double> theFunction, double lhs, double rhs)
    {
        return theFunction(lhs,rhs);
    }
    
    var add = new Func<double,double,double>( (x,y) => x + y);
    var addResult = Execute(add, 1.1, 2.2);
    var multiply = new Func<double,double,double>( (x,y) => x * y);
    var multiplyResult = Execute(multiply, 1.1, 2.2);
    

    2023-02-14 02:25 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有