Lee*_*Lee 35
public delegate bool Foo(DateTime timestamp);
Run Code Online (Sandbox Code Playgroud)
这是如何使用您描述的签名声明委托.所有代表都可能是多播的,他们只需要初始化.如:
public bool IsGreaterThanNow(DateTime timestamp)
{
return DateTime.Now < timestamp;
}
public bool IsLessThanNow(DateTime timestamp)
{
return DateTime.Now > timestamp;
}
Foo f1 = IsGreaterThanNow;
Foo f2 = IsLessThanNow;
Foo fAll = f1 + f2;
Run Code Online (Sandbox Code Playgroud)
呼叫fAll,在这种情况下,将通话双方IsGreaterThanNow()和IsLessThanNow().
这样做不会让您访问每个返回值.你得到的只是返回的最后一个值.如果要检索每个值,则必须手动处理多播,如下所示:
List<bool> returnValues = new List<bool>();
foreach(Foo f in fAll.GetInvocationList())
{
returnValues.Add(f(timestamp));
}
Run Code Online (Sandbox Code Playgroud)