Loading...
kaloyan_kolev avatar kaloyan_kolev 10 Точки

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 въведеното число. (от конструктура) Какви са тестовете, които прецакват втория?

Тагове:
0
C# Advanced 12/06/2019 22:49:41
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

примерно празен вход ? :Д а и каква е логиката да връщаш 

Person oldestPerson = new Person(-1); ако нямаш oldest person? при празен лист теста ще очаква null..а ти му връщаш person с age-1 ?

 

0
kaloyan_kolev avatar kaloyan_kolev 10 Точки

Добре, но ако oldestPerson върне null, т.е. са ни подали празен лист, когато се опитам да достъпя oldestPerson.Name, не връща ли NullReferenceException? Явно това се очаква да върне. Може би моето решение ще бъде адекватно, ако проверявам дали oldestPerson.Age > -1, т.е. сме го променили.

0
13/06/2019 07:42:14
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки
public Person GetOldestMember()
{
    Person oldestPerson = people.OrderByDescending(x => x.Age).FirstOrDefault();

    return oldestPerson;
}

това ще ти върне null ако беше first тогава щеше да хвръли exception. А какво се случва нататък не знам не виждам пълния код коментирам само което виждам 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.