0

我写了以下代码:

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。为什么这能解决问题?

4

2 回答 2

3

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

删除卡片然后返回列表的以下代码应该可以工作:

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

如果shuffle实际上是一个全球性的,你甚至不需要返回任何东西。

于 2012-05-05T12:53:26.037 回答
1

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

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

您需要将代码分成两行:

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;
}
于 2012-05-05T12:53:36.463 回答