所以我的问题是我在这段代码中得到了一个无效的参数错误。它的意思是拿出一张牌并得到它们总价值的总和。然后,如果该值大于21,它会检查手中的任何牌是否是ace(或者类型是== ace并且它的牌totalVal == 11)现在我的问题是我为此写的语句无论手中是否有ace都会运行并抛出错误。
我想知道是否还有其他方法我可以写下面的语句以使其正常运行?
public int HandTotal()
{
int total = CurrentCards.Sum(n => n.Total);
**while ( total > 21 && CurrentCards.First(n => n.Type == 13 && n.Total == 11) !=null)**
{
CurrentCards.First(n => n.Type == 13).Total = 1;
total = CurrentCards.Sum(n => n.Total);
return total;
}
return total;
}
我尝试了几种不同的方法,包括将!= null更改为> 0然而,抛出一个无效的参数错误,说>不能与此声明一起使用。有没有其他方法可以确定CurrentCards.First(n => n.Type == 13&& n.Total == 11)是真还是假?
非常感谢任何帮助或建议。
谢谢
答案 0 :(得分:5)
答案 1 :(得分:2)
如果没有匹配的元素,First
方法会抛出异常。
您需要致电FirstOrDefault
,这可以返回null
。
答案 2 :(得分:2)
如果没有返回元素,您应该尝试使用FirstOrDefault而不是First.First会抛出错误。 还要检查CurrentCards是否为空。如果IEnumumerable为空,则First和FirstOrDefault都会给出ArguementNullException。