好吧,我知道标题很困惑。所以让我通过一个例子来解释我的意思:
(我从我正在阅读的书中得到了一个例子,它是“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/