C# 委托vs动作,函数在C中#

C# 委托vs动作,函数在C中#,c#,delegates,C#,Delegates,这似乎是个愚蠢的问题,但这只是出于好奇 我们已经在C#中定义了两个特定的委托: 操作封装了任何接受0个或多个参数的“void”方法。 Func封装任何返回特定值类型并接受0个或多个参数的方法 我的问题是:在哪些情况下建议定义自定义委托? 你为什么要这么做? 提前感谢所有Func或Action类型都不允许out或ref参数,因此如果需要使用这些参数,您必须定义自己的代理,例如: public delegate bool TryParse<T>(string s, out T

这似乎是个愚蠢的问题,但这只是出于好奇

我们已经在C#中定义了两个特定的委托:

操作封装了任何接受0个或多个参数的“void”方法。
Func封装任何返回特定值类型并接受0个或多个参数的方法

我的问题是:在哪些情况下建议定义自定义委托?
你为什么要这么做?


提前感谢

所有
Func
Action
类型都不允许
out
ref
参数,因此如果需要使用这些参数,您必须定义自己的代理,例如:

public delegate bool TryParse<T>(string s, out T value);
public委托bool TryParse(字符串s,out T值);

在很多情况下,您需要引用/指向一个函数(因此,如果函数的实际实现在运行时会有所不同,除了签名),但该函数与给定的任何一个委托都不匹配。说


公共代表T MyDel(T T,U U,V V)

代表在Func和Action之前就已经存在了,在许多方面,他们充当向后兼容设备。然而,在有些情况下,你不能四处走动,只能创建你的委托。注意,这可能会很有用。是的,这很符合逻辑。我不知道这是否是YOUR的意图,但您刚刚让我意识到Action和Func也不允许类型参数。
非常感谢!您的委托中有两种返回类型。我想你的意思是:公共委托booltryparse(字符串s,out T值);我希望我能编辑它,但6个字符的规则仍然适用。@user886079-是的,我的意思是
bool
,谢谢。你说得绝对正确。谢谢你,伙计!