今天,我正在考虑声明以下内容:
private delegate double ChangeListAction(string param1, int number);
但是为什么不使用这个:
private Func<string, int, double> ChangeListAction;
或者如果ChangeListAction没有返回值,我可以使用:
ChangeListAction
private Action<string,int> ChangeListAction;
那么用delegate关键字声明委托的好处在哪里?
delegate
是因为.NET 1.1,随着.NET 2.0的出现Action<T>,还是随着.NET 3.5的出现Func<T>?
Action<T>
Func<T>
优点是清晰。通过为类型指定一个明确的名称,读者可以更清楚地知道它的作用。
当您编写代码时,它也将为您提供帮助。像这样的错误:
cannot convert from Func<string, int, double> to Func<string, int, int, double>
没有说以下内容那么有用:
cannot convert from CreateListAction to UpdateListAction
这也意味着,如果您有两个不同的委托,这两个委托都使用相同类型的参数,但从概念上讲,它们执行两项完全不同的操作,则编译器可以确保您不会意外地在原意中使用另一个。