[OOP] Енкапсулация на референтен тип данни


1
Здравейте, колеги. Въпроса ми се отнася до това: когато в на едно свойство get метода връщаме List

в C# OOP от a.dimitrov (1047 точки)


Отговори



1
Във всички случаи зависи точно целиш да постигнеш с тази енкапсулация. Основната функция на класовете е да съхраняват данни, всеки един клас е от референтен тип, колекциите също са класове.
Всъщност ако имаш само getter на поле, което е инстанция на клас и не връщаш негово копие, то данните в този обект могат да бъдат променяни, но самият обект не може да бъде подменен с друг. Ако искаш да го направиш максимално thread-safe можеш да връщаш обект като new object(obj).AsReadOnly.
Всичко опира до индивидуална преценка в крайна сметка, според мен трябва винаги да се стремиш, да осигуриш максимална защита на данните си , като една от практиките е да връщаш винаги ново копие на референтните типове.

от stinger907 (307 точки)


3
Най-добрия вариант е да сложиш референтния тип да бъде private и с методи да връщаш това, което искаш да покажеш на "публиката".

от ivaylo.kenov (30760 точки)


0
А правилно ли е да го върнем през get-ера на определеното property и set-а да го направим private?