gpt4 book ai didi

c# - 为什么带约束的通用扩展方法不被识别为扩展方法?

转载 作者:太空狗 更新时间:2023-10-29 23:10:21 26 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
No type inference with generic extension method

考虑两种方法:

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>

两者都编译得很好,在这两种情况下,泛型类型的类型将在调用者的编译时已知,因此扩展类型的确切类型。

您可以同时调用两者,但只能调用第一个作为扩展。

为什么?

更新 1

要看到它失败,请使用第二种方法和这样的例子:

    var x = new List<List<int>>();
var y = x.Merge();

更新——关闭

你们不觉得原帖太详细了,看不清楚吗?出于教育目的,我认为这篇文章不应该被关闭,即使从技术上讲(即答案)它是重复的。只是我的 2 美分。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com