是什么原因导致从类型void到List的隐式转换错误

本文关键字:错误 转换 List void 类型 是什么 | 更新日期: 2023-09-27 18:33:13

我写了以下代码:

public List<Card> DealCards(int numCardsToDeal) {
            return shuffle.RemoveRange(0,numCardsToDeal-1);
        }
private List<Card> shuffle = new List<Card>() // class property deceleration. 

但它会产生以下错误:

无法将类型"void"隐式转换为"System.Collections.Generic.List"

我不明白为什么。当我刚回来shuffle时它有效.为什么可以解决问题?

是什么原因导致从类型void到List<T>的隐式转换错误

RemoveRange 修改列表并且不返回任何内容 - 因此void .在这方面,它与许多返回新列表的列表方法不同。

删除卡然后返回列表的以下代码应该有效:

public List<Card> DealCards(int numCardsToDeal)
{
    shuffle.RemoveRange(0,numCardsToDeal-1);
    return shuffle;
}

如果shuffle实际上是全局的,您甚至不需要返回任何内容。

RemoveRange 方法不返回值,其返回类型为 void 。它所做的只是从列表中删除指定范围的元素。它不返回修改后的列表或包含已删除对象的列表。

因此,尝试返回 RemoveRange 方法的结果会产生错误,因为您无法从应该返回 List<Card> 的函数返回void

您需要将代码拆分为两行:

public List<Card> DealCards(int numCardsToDeal)
{
    // First, remove the range of cards from the deck.
    shuffle.RemoveRange(0,numCardsToDeal-1);
    // Then, return the modified list.
    return shuffle;
}
相关文章: