.net 是否有任何理由定义自定义委托?
除了调用具有大量参数的方法(可能还支持.NET 3.5之前的代码)之外,定义自定义委托而不是仅使用Func和Action是否有任何理由?就功能而言,实际上并不是这样。就可读性而言,我唯一能想象的就是更加明确。考虑下面的例子:.net 是否有任何理由定义自定义委托?,.net,c#-4.0,.net,C# 4.0,除了调用具有大量参数的方法(可能还支持.NET 3.5之前的代码)之外,定义自定义委托而不是仅使用Func和Action是否有任何理由?就功能而言,实际上并不是这样。就可读性而言,我唯一能想象的就是更加明确。考虑下面的例子: public delegate void MessageHandler(string msg); // user custom delegate public sub DoSomething(MessageHandler handler){} // use generi
public delegate void MessageHandler(string msg);
// user custom delegate
public sub DoSomething(MessageHandler handler){}
// use generic action
public sub DoSomething(Action<string> handler){}
就功能而言,不是真的。就可读性而言,我唯一能想象的就是更加明确。考虑下面的例子:
public delegate void MessageHandler(string msg);
// user custom delegate
public sub DoSomething(MessageHandler handler){}
// use generic action
public sub DoSomething(Action<string> handler){}
在现代C#代码中,您是对的,很少需要创建自定义委托。对于C#4,我只会创建一个自定义委托:
- 当存在多个参数时,可提高可读性和自我文档编制
- 如果委托的名称可以向API的用户传达含义
- 也许对于一些P/Invoke操作,现在想不出任何方法
- 当存在多个参数时,可提高可读性和自我文档编制
- 如果委托的名称可以向API的用户传达含义
- 也许对于一些P/Invoke操作,现在想不出任何方法
您倾向于在.NET代码库中看到一些自定义委托的原因是,它的大部分设计非常早,当时C#是版本1,没有匿名委托、lambda或泛型。因此,大多数需要委托类型的操作都需要自定义委托。到目前为止没有提到的一个方面是
Func
和Action
不支持ref
和out
参数。不过,学员可以使用它们。到目前为止没有提到的一个方面是Func
和Action
不支持ref
和out
参数。当然,公共标识符应该有好的描述性名称。当然,公共标识符应该有好的描述性名称。