Enum Encapsulation


1

Може би въпроса ми е малко глупав но .. Трябва ли да а се encapsulirat полета от тип ENUM добра практика ли е да се прави? При какви случай се налага ... Ако някой може да каже ще съм много благодарен :


в C# OOP от slavib (176 точки)


Отговори



2
Най-добре е всяко поле, тип, метод и т.н. да е видим и достъпен само там, къето се използва. Ако енумерацията ти е просто за вътрешни сметки - крий я. Ако обаче използваш типа в конструктор, например, значи трябва да ти е публична. :)

от dentia (12519 точки)


1

Ясно разбрах .. Защото като му давам през рефраторинг Студиото директно ми слага internel на Енумерацията ... 

Още един въпрос Аз ако имам Enumerator Property и искам да си добавям от вън в Енумератора още неща т.е. да му сетвам стойности ... През конструктор ... като се замисля Има ли смисъл да го правя !!!?? 


от slavib (176 точки)

0

Доколкото разбрах енумерацията е списък с наименовани константи и нищо повече. Тя е за улеснение на програмиста като пише кода. Не може да се използва от самото приложение като променлива при рънтайма. По време на компилирането компилаторът просто замества имената със съответните им стойности или дефаутните такива. Ако ти трябва още една опция в енумерацията просто си я добави в кода. Идеята е че това не е клас, който можеш да му създаваш инстанции с променливи при самото изпълнение (рънтайм) на програмата. Мисли си списък с имена на константи (целочислени числа). Някой да ме поправи ако греша?


от todorm85 (1347 точки)


0

Използвам пусната тема, да не пускам нова да задам един въпрос през две села, в трето свързан с твоя... 

Казусът е следния - имам прожектор, който трябва да има ANSI Lumen property. Те в реалния свят са като range - до 400, до 1000, до 2000, до 3000, до 4000...бих искала да имам енумерация, но знам, че не може да и се дава range. 

Лоша практика ли би било да направя Enum така- upTo400, upTo1000... или по-добре да оставя попъртито с ограничени стойности 

(value < 400 || value > 5000) и да хвърлям Ексепшън? 


от Alex_H (1616 точки)