[Homework]-OOP-Defining-Classes- Problem{1} - Persons
Възможно ли е някой да погледне къде бъркам при решаването на PROBLEM 1. Дава грешка, когато създам нов Person без email. Благодаря :)
Възможно ли е някой да погледне къде бъркам при решаването на PROBLEM 1. Дава грешка, когато създам нов Person без email. Благодаря :)
Ще ти гръмне с NullReferenceException защото в конструктора, който не приема Email пак ползваш сетъра на пропъртито Email, като му подаваш null. Съответно при проверката:
if (!value.Contains("@")) |
се опитва да достъпи метод Contains на null.
Вариянта е в конструктора, който приема само име и години просто да не сетваш нищо за email.
Поздрави.
Здравей. Аз не използвах Regex. Не сложих проверка в property за e-mail, но го направих преди да принтирам.И работеше всичко перфектно.
Ето моето решение. http://github.com/enisslkglu/OOPHomeworkSoftUni/tree/master/01.Persons
Това е лоша идея. Ако ще има валидация, сложи я още в началото. Искаш като пазиш някакви данни те да са валидни още при попълването си.
Да речем, че искам да използвам този мейл за нещо. Разчитам, че класа има валидни данни, но всъщност валидацията е изнесена във някаква функция, през която не минавам. Следователно - лоша енкапсулация и бъгове, в краен случай.
Би трябвало да стане леко и ефективно със същата проверка, която си използвал :)
Благодаря за съветът. Ще сменч решението и за по нататък ще гледам да не правя същата грешка.
Здравей,
В условието пишеше да проветим дали има символа "@" в емайла като валидация.
можеш да използваш string.Contains метода в сетъра:
public string Email
{
get
{
return this.email;
}
set
{
if (value != null && !value.Contains("@"))
{
throw new ArgumentOutOfRangeException("Invalid email!");
}
this.email = value;
}
}
Има лека грешка вътре в if-a:
if (value != null || !value.Contains("@"))
{
//...
}
Ще хвърля грешка за всеки стринг, който не е null (заради или-то).
По-скоро:
if (value != null && !value.Contains("@"))
Така е, моя грешка трябва да е :
if (value != null && !value.Contains("@"))
Редактирах го, но отново ми гърми с NullReferenceException.
Оправих го като добавих проверка:
if (value!=null&&!value.Contains("@"))
{
throw new ArgumentException("Invalid Email");
}
Благодаря за бързия отговор.
Доколкото разбрах от условието, би трябвало да можеш да създадеш човек без да задаваш email, докато при такава проверка при липса на email ще гърми
за email-a можеш да направиш проверка с Regex
то тогава