Професионална програма
Loading...
+ Нов въпрос
coaster avatar coaster 415 Точки

[OOP for beginners] Проблем с хвърляне на exception от property

Здравейте,

гледам първата лекция по ООП от септември 2014 и съответно преписвам всичко, което пише Наков, защото съм absolute beginner в ООП-то..
Малко код тук.
Ще пробвам да обясня проблема със свои думи. Когато дам стойност на p1.X = 300, програмата би трябвало да влезе в set на property-то и да гръмне с ArgumentOutOfRangeException (х трябва да е между 0 и 100). Добре, но такова нещо не се случва. Подкарах я през дебъгера и забелязах, че когато стигне до конструктора, this.x става 0, а value e 300. Смених x-a в if-a с value, тоест
if ((value < 0) || (value > 100)) { //throw new .... },
и така работи, но защо във видеото работи и с х, а при мен не?

Сравнявам моите писания с неговите (1 към 1) и не разбирам къде се случва разминаването. Надявам се на обяснение и на не много голямо хранене ако въпросът е тъп..

0
C# OOP Basics 19/07/2015 16:33:28
ksevery avatar ksevery 35 Точки

Значи от това, което мога да видя, при него също не работи - ако се загледаш, ще видиш че грешката, която се хвъррля при него, не е тази от сетъра. Винаги, когато трябва да проверяваш дали са ти пристигнали валидни данни, използваш value. Ако проверката ти е с x, програмата ще гръмне при следващо задаване на стойност, защото ще проверява настоящата стойност на полето. А това реално не ни върши никаква работа - искаме да работим със стойността, която искаме да запишем.

Надявам се да съм отговорил на въпроса ти, питай ако нещо не ти е станало ясно.

Поздрави,
Константин

2
DHristoskov avatar DHristoskov 211 Точки

Ето и от мен товето решение с малко преработка и малко коментари, за да бъде по нагледно.Дано да съм полезен.

Успех!!!

0