.net EventHandler仅限于从EventArgs继承的模板。怎么做?该实现(请参考vs)显示了以下代码:

[Serializable]
public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e);


但是我认为TEventArgs只是一个名字。我该如何写一个类型委托,它限制了从MyClass继承的任何东西?

最佳答案

TEventArgs是泛型类型参数-但有一个约束。实际的签名是:

[Serializable]
public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e)
    where TEventArgs : EventArgs


where TEventArgs : EventArgs”位是类型约束,这意味着您只能为TEventArgs或派生类提供EventArgs的类型参数。

基本上,它只是“常规” C#泛型,仅应用于委托声明。

关于c# - 具有模板的C#Typeresticted委托(delegate),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/711744/

10-11 00:54