一尘不染

手动创建委托与使用Action / Func委托

c#

今天,我正在考虑声明以下内容:

private delegate double ChangeListAction(string param1, int number);

但是为什么不使用这个:

private Func<string, int, double> ChangeListAction;

或者如果ChangeListAction没有返回值,我可以使用:

private Action<string,int> ChangeListAction;

那么用delegate关键字声明委托的好处在哪里?

是因为.NET 1.1,随着.NET 2.0的出现Action<T>,还是随着.NET 3.5的出现Func<T>


阅读 248

收藏
2020-05-19

共1个答案

一尘不染

优点是清晰。通过为类型指定一个明确的名称,读者可以更清楚地知道它的作用。

当您编写代码时,它也将为您提供帮助。像这样的错误:

cannot convert from Func<string, int, double> to Func<string, int, int, double>

没有说以下内容那么有用:

cannot convert from CreateListAction to UpdateListAction

这也意味着,如果您有两个不同的委托,这两个委托都使用相同类型的参数,但从概念上讲,它们执行两项完全不同的操作,则编译器可以确保您不会意外地在原意中使用另一个。

2020-05-19