Loading...
coaster avatar coaster 412 Точки

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