Во-первых, причина того, что вы получаете это сообщение, заключается в том, что если this
пусто, то код в блоке foreach
(где находится требуемый оператор return
) никогда не будет выполнен.*
Однако ваша функция TotalLength()
всегда будет возвращать длину первого Song
, поскольку вы объявляете свою переменную, устанавливаете ее значение, а затем возвращаете его в блоке foreach
.Вместо этого вам нужно сделать что-то вроде этого:
int totalLength = 0;
foreach(Song s in this)
{
total += s.LengthInSeconds;
}
return totalLength;
Ваша функция PlayedCount
страдает от подобных проблем (если коллекция пуста или не содержит элементов, свойство TimesPlayed
которых больше 0,тогда он не сможет вернуть значение), поэтому, судя по вашему комментарию, вы можете написать это так:
public int PlayedCount()
{
int total = 0;
foreach(Song s in this)
{
if (s.TimesPlayed > 0)
{
total++;
}
}
return total;
}