当MSDN没有显示时,您如何知道方法返回的内容?

时间:2018-04-14 17:07:42

标签: c# .net

好吧,我知道标题很混乱。那么让我通过一个例子来解释我的意思:

(我从书中得到了我正在阅读的例子,这是" Pro C#with .NET和.NET Core)

public void RegisterWithCarEngine(CarEngineHandler methodToCall)
{ 
    if (listOfHandlers == null)
        listOfHandlers = methodToCall;
    else
       listOfHandlers = Delegate.Combine(listOfHandlers, methodToCall) as CarEngineHandler;
} 

listOfHandlers是委托CarEngineHandler的一个实例。 我的问题具体是关于这一行:

listOfHandlers = Delegate.Combine(listOfHandlers, methodToCall) as CarEngineHandler;

你在这里看到我正在调用静态方法Combine()。而且你看到我将它投射到CarEngineHandler。因此,此方法返回被视为CarEngineHandler的{​​{1}}实例。

但是,这让我很困惑。当MSDN没有说出来时,我怎么知道它返回Delegate的实例?

所有MSDN says about it都是这样的:

  

返回值
  输入:System.Delegate
  具有调用列表的新委托,该列表连接CarEngineHandler数组中委托的调用列表。如果delegatesnulldelegates包含零元素,或null中的每个条目均为delegates,则返回delegates

1 个答案:

答案 0 :(得分:4)

你完全正确,这是应该记录的事情。所有代表都必须属于同一类型(如#34; Exceptions"中所记载的那样)这一事实暗示了这一点,但实际上并没有做出任何承诺。它还需要" Combine对于创建每次事件发生时调用多个方法的事件处理程序非常有用。"但这实际上并没有承诺任何事情。

不幸的是,这只是其中一个案例,你可以从MS的事实中看出,Delegate.Combine的行为方式表明它不会发生变化。