|
|
1
5
这是一个相反的问题
例如,如果您有:
您只能分配
是安全的,因为字符串参数在对象参数所在的位置始终有效。 |
|
|
2
3
类和代理不是一回事。
|
|
|
3
2
这个
因此,您尝试做的事情可以简化为:
这不应该在静止时起作用
http://blogs.msdn.com/b/csharpfaq/archive/2010/02/16/covariance-and-contravariance-faq.aspx http://msdn.microsoft.com/en-us/library/dd799517.aspx 所以如果你 真正地 需要使用通用而不仅仅是接口-您可以这样做,尽管这会增加复杂性和小的性能问题:
|
|
|
4
2
我发现在这种情况下,如果你允许这种行为,考虑一下会出什么问题是有帮助的。所以让我们考虑一下。
那么会发生什么呢?我们创建一个代表,它抓住老虎并猛扑,然后将其传递给
显然这是违法的。唯一明智的做法是将其定为非法
|
|
|
5
1
类和代理的行为有点不同。让我们看一个简单的例子:
在这个方法中,你可以假设T至少是
现在,让我们看看代理的行为:
现在,我们将DerivedClass回调添加到myActionList,然后在某个地方调用委托:
但您不能这样做,因为如果您有DerivedClass回调,您必须将其作为参数传递给DerivedCClass。 这个问题指的是 Covariance and contravariance 。你可以从 this 文章,Eric Lippert也有关于方差的非常有趣的文章, this 是第一篇文章,你可以在他的博客中找到其余的。 附言根据Lee的评论进行编辑。 |
|
|
6
0
如果
将工作和编译,实际上与您现在拥有的内容相同。 如果您想对类型进行相同的REGARDLESS操作,如果您将类型限制在某个接口上,那么泛型是有用的——您已经破坏了泛型的目的,可能只应该使用该接口。 |