gre*_*man 5 c# generics extension-methods constraints
可能重复:
没有使用通用扩展方法的类型推断
考虑两种方法:
public static IEnumerable<V> Merge<V>
(this IEnumerable<IEnumerable<V>> coll)
public static IEnumerable<V> Merge<T, V>
(this IEnumerable<T> coll)
where T : IEnumerable<V>
Run Code Online (Sandbox Code Playgroud)
两者都编译得很好,在这两种情况下,泛型类型的类型将在调用者的编译时知道,因此是扩展类型的确切类型.
你可以调用两个,但只有第一个作为扩展名.
为什么?
要查看它失败,请使用第二种方法和示例:
var x = new List<List<int>>();
var y = x.Merge();
Run Code Online (Sandbox Code Playgroud)
难道你们不认为原帖是太精心设计得到清晰的画面吗?出于教育目的,我认为这篇文章不应该被关闭,即使技术上(即答案)它是重复的.只需2美分.
归档时间: |
|
查看次数: |
1575 次 |
最近记录: |