gpt4 book ai didi

c# - 显式使用扩展方法

转载 作者:可可西里 更新时间:2023-11-01 08:34:58 26 4
gpt4 key购买 nike

我有一个 List<T>并希望以相反的顺序取回值。我不想要的是反转列表本身。

这似乎完全没有问题,因为有一个 Reverse() IEnumerable<T> 的扩展方法这正是我想要的。

我的问题是,还有一个 Reverse() List<T> 的方法它反转列表本身并返回 void。

我知道有很多的方法可以以相反的顺序遍历列表,但我的问题是:

如何告诉编译器我想使用同名的扩展方法?

var list = new List<int>(new [] {1, 2, 3});
DumpList(list.Reverse()); // error

最佳答案

显式绑定(bind)到特定扩展方法的最佳方法是使用共享方法语法调用它。在你的情况下,你会这样做:

DumpList(Enumerable.Reverse(list));

这里提到的其他一些方法的问题是它们并不总是按照您的意愿进行。例如,像这样转换列表:

((IEnumerable)list).Reverse()

最终可能会调用完全不同的方法,具体取决于您导入的命名空间或定义调用代码的类型。

要 100% 确定绑定(bind)到特定扩展方法的唯一方法是使用共享方法语法。

关于c# - 显式使用扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/987541/

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