У меня есть функция, которая принимает список объектов (в моем случае, комментарии к записи в блоге) и пользователя.Затем функция должна выполнить итерацию по каждому комментарию в списке и установить логическое свойство IsCommenter
в значение true или false в зависимости от того, равен ли идентификатор автора комментария идентификатору пользователя, который был передан. Концепция, представленная на рисунке ниже:

Если я вошел в систему как Taylor Swift и приведенный ниже список отправляется этой функции, а также Taylor Swift пользователю, тогда это логическое значениефункция должна вернуть false (потому что первый комментарий был сделан Happy Gilmore), true, true, 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. Есть мысли о том, как сделать эту работу?