Tim*_*ery 1 c# generics events delegates
此问题的答案声称,如果泛型类的使用者未指定类型,则无法指定将使用的默认类型参数.
但是当使用预定义的通用EventHandler委托来解决事件的引发时......如果您没有使用可能在EventArgs参数中传递的任何数据,则实际上您不必指定类型参数.换句话说,public event EventHandler<TEventArgs> EventDelegate;您可以使用,而不是使用public EventHandler EventDelegate;
在我对泛型的极其有限的使用中,我发现在没有指定类型参数的情况下使用泛型类是不可能的,并且响应链接问题给出的答案将与此一致,那么预定义泛型EventHandler<TEventArgs>委托是如何实现的呢?违反这条规则?
不,这不是'默认'值. EventHandler并且EventHandler<T>是完全不同的类型.同样的问题也发生在IEnumerable和IEnumerable<T>所有表现出这种模式的其它类似命名的类型.
你可以很容易地推出自己的版本.
class MyType
{
void Foo(object obj) ...
}
class MyType<T> : MyType
{
void Foo(T obj)
{
base.Foo(obj);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |