Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带模板的C#类型受限委托_C#_Templates_Delegates_Limit - Fatal编程技术网

带模板的C#类型受限委托

带模板的C#类型受限委托,c#,templates,delegates,limit,C#,Templates,Delegates,Limit,.net EventHandler仅限于从EventArgs继承的模板。这是怎么做到的?实现(在vs中获得引用)显示以下代码: [Serializable] public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e); [可序列化] 公共委托void EventHandler(对象发送方,TEventArgs e); 但我认为TEventArgs只是一个名字。如何编写一个类型化委托,该委托仅

.net EventHandler仅限于从EventArgs继承的模板。这是怎么做到的?实现(在vs中获得引用)显示以下代码:

[Serializable]
public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e);
[可序列化]
公共委托void EventHandler(对象发送方,TEventArgs e);

但我认为TEventArgs只是一个名字。如何编写一个类型化委托,该委托仅限于从MyClass继承的任何内容?

TEventArgs
是一个泛型类型参数,但它有一个约束。实际签名为:

[Serializable]
public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e)
    where TEventArgs : EventArgs
[可序列化]
公共委托void事件处理程序(对象发送方,TEventArgs e)
其中TEventArgs:EventArgs
其中TEventArgs:EventArgs
”位是类型约束,这意味着您只能为
TEventArgs
或派生类提供类型参数


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

TEventArgs
是泛型类型参数,但它有一个约束。实际签名为:

[Serializable]
public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e)
    where TEventArgs : EventArgs
[可序列化]
公共委托void事件处理程序(对象发送方,TEventArgs e)
其中TEventArgs:EventArgs
其中TEventArgs:EventArgs
”位是类型约束,这意味着您只能为
TEventArgs
或派生类提供类型参数


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

如果我查看Jon Skeet的代码,我可以在2秒钟内看到解决方案。我使用了两个答案,不想错过文档的链接,但我只能将一个答案标记为正确。添加链接不是错误;)但是也要写下明显的部分。如果我看一下Jon Skeet的代码,我可以在2秒钟内看到解决方案。我使用了两个答案,不想错过文档的链接,但我只能将一个答案标记为正确。添加链接不是错误;)但也要把明显的部分写下来。