我有一个接受对象列表(在我的情况下,是博客文章中的评论)和用户的函数。然后,该函数应遍历列表中的每个注释,并将IsCommenter
布尔值属性设置为true或false,具体取决于注释作者ID是否等于传入的用户的ID。概念如下图所示:
如果我以泰勒·斯威夫特(Taylor Swift)的身份登录,并且以下列表以及用户的泰勒·斯威夫特(Taylor Swift)发送给该函数,则此布尔函数应返回false(因为第一个评论由Happy Gilmore发表),为true ,正确,正确。
但是它不起作用。它正在做第一个注释,将其设置为true或false,然后退出foreach循环,将注释列表中第一个对象之后的所有内容都设置为false。
public bool IsCommenter(List<Comment> comments, ApplicationUser user)
{
if (user == null) throw new ArgumentNullException("User can't be null");
if (comments.Count() <= 0) throw new ArgumentException("Must have more than one comment.");
foreach(var comment in comments)
{
if (comment.AuthorId == user.Id)
{
return comment.IsCommenter = true;
} else
{
return comment.IsCommenter = false;
}
}
return false;
}
我怀疑这可能是由于函数中的最后return false
所致,但是,我把它放在那儿是因为没有它,我会得到一个错误,即并非所有代码路径都返回一个值(我不会看看当它是if / else而不是if / elseif时可能会是这种情况。对此有任何想法吗?
答案 0 :(得分:2)
因为循环中有return
。删除
foreach(var comment in comments)
{
if (comment.AuthorId == user.Id)
{
comment.IsCommenter = true;
}
else
{
comment.IsCommenter = false;
}
}
或简化
foreach(var comment in comments)
{
comment.IsCommenter = comment.AuthorId == user.Id;
}