Abe*_*bel 5 .net c# generics clr
这是好奇心的一部分,因为我只想尝试使用它.如果您具有以下定义,则编译器不允许这样做,因为它表示已定义成员.不允许泛型类型参数的独占重载的原因是什么?
void Get<T>() where T: struct {}
void Get<T>() where T: class {}
Run Code Online (Sandbox Code Playgroud)
在我看来,这没有固有的问题.有人可能会争辩说,在定义重叠的情况下,编制者应该选择哪一个并不总是很清楚(但是普通分辨率似乎最先具体匹配).
有人可以帮助我理解或指向资源禁止这种情况的原因是什么?
Eric Lippert已经在关于通用约束和方法签名的博客文章中回答了这个问题:http://blogs.msdn.com/b/ericlippert/archive/2009/12/10/constraints-are-not-part-of-该-signature.aspx
泛型类型的约束不是CLR中方法签名的一部分,因此您不能有两种方法仅在泛型类型约束方面有所不同.如果没有CLR支持,让C#以与其他.NET语言兼容的合理方式支持这些将是非常繁琐的.
| 归档时间: |
|
| 查看次数: |
1213 次 |
| 最近记录: |