Oldest Family Member от Defining Classes
Здравейте,
(УСЛОВИЕТО: https://softuni.bg/trainings/resources/officedocument/40531/exercise-problem-descriptions-csharp-advanced-may-2019/2348)
разглеждам два варианта за връщане на най-възрастния от семейството:
public Person GetOldestMember()
{
Person oldestPerson = people.OrderByDescending(x => x.Age).FirstOrDefault();
return oldestPerson;
}
public Person GetOldestMember()
{
Person oldestPerson = new Person(-1); //constructor with parameter age
foreach (Person person in people)
{
if (person.Age > oldestPerson.Age)
{
oldestPerson = person;
}
}
return oldestPerson;
}
С първия вариант програмата работи 100/100, а с втория 60/100. Единствената разлика, която виждам е, че първият метод ще върне null за празен лист, а втория Person обект с Name = "No name" и Age въведеното число. (от конструктура) Какви са тестовете, които прецакват втория?
Добре, но ако oldestPerson върне null, т.е. са ни подали празен лист, когато се опитам да достъпя oldestPerson.Name, не връща ли NullReferenceException? Явно това се очаква да върне. Може би моето решение ще бъде адекватно, ако проверявам дали oldestPerson.Age > -1, т.е. сме го променили.
това ще ти върне null ако беше first тогава щеше да хвръли exception. А какво се случва нататък не знам не виждам пълния код коментирам само което виждам