是什么原因导致从类型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
时它有效.为什么可以解决问题?
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;
}