gpt4 book ai didi

c# - 无法在 foreach 中反转 List

转载 作者:太空宇宙 更新时间:2023-11-03 17:48:18 25 4
gpt4 key购买 nike

我有一个 List<T>我需要反转,所以我尝试了:

foreach (Round round in Competition.Rounds.Reverse())
{

}

这会返回以下错误:

the foreach statement can not work with variables of type 'void' 
because 'void' does not contain a public instance definition for 'GetEnumerator'

我该如何解决这个问题?

最佳答案

有两个Reverse考虑的方法:

编译器仅在用尽实例方法后才查找扩展方法 - 因此在这种情况下,它绑定(bind)到 List<T>.Reverse()方法...这就是它无法编译的原因。 (您不能遍历 void 。)

如果要修改列表,单独调用方法即可:

Competition.Rounds.Reverse();
foreach (Round round in Competition.Rounds)
{
...
}

如果您不想修改列表,最简单的方法可能是调用 Enumerable.Reverse<T>直接:

foreach (Round round in Enumerable.Reverse(Competition.Rounds))
{
...
}

或者您可以有效地“丢失”List<T> 的编译时类型,例如像这样:

// Important: don't change the type of rounds to List<Round>
IEnumerable<Round> rounds = Competition.Rounds;
foreach (Round round in rounds.Reverse())
{
...
}

关于c# - 无法在 foreach 中反转 List<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50669114/

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