好吧,我知道标题很困惑。所以让我通过一个例子来解释我的意思:

(我从我正在阅读的书中得到了一个例子,它是“Pro C# with .NET and .NET Core)

public void RegisterWithCarEngine(CarEngineHandler methodToCall)
{
    if (listOfHandlers == null)
        listOfHandlers = methodToCall;
    else
       listOfHandlers = Delegate.Combine(listOfHandlers, methodToCall) as CarEngineHandler;
}
listOfHandlers 是委托(delegate) CarEngineHandler 的一个实例。
我的问题特别是关于这条线:
listOfHandlers = Delegate.Combine(listOfHandlers, methodToCall) as CarEngineHandler;

你在这里看到我正在调用静态方法 Combine() 。你会看到我将它转换为 CarEngineHandler 。因此,此方法返回一个 CarEngineHandler 的实例,被视为 Delegate

但这就是让我困惑的地方。当 MSDN 没有说明时,我怎么知道它正在返回 CarEngineHandler 的实例?

所有 MSDN says about it 是这样的:

最佳答案

你是完全正确的,这是应该记录的东西。所有委托(delegate)都必须是同一类型(如“异常(exception)”下所述)这一事实暗示了这一点,但这实际上并没有做出任何 promise 。 “Combine 可用于创建每次事件发生时调用多个方法的事件处理程序。”但这实际上也没有任何 promise 。

不幸的是,这只是其中一种情况,您可以从 MS 本身依赖 Delegate.Combine 的行为方式来判断它永远不会改变这一事实。

关于c# - 当 MSDN 没有显示时,你怎么知道方法返回了什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49834039/

10-17 02:15