tiwal Ответов: 1

Установка объекта внутри класса


У меня есть следующее сомнение.
Наличие класса, который содержит группу членов, один из которых является объектом другого класса.
Я создаю методы доступа для защиты входных данных для не-объектных членов (например, строк), и мне интересно, имеет ли смысл делать то же самое для объектного члена.

Если я сделаю что-то подобное :

public class MyClass {

     string       member1;
     AnotherClass member2;

     string       Member1 {  get; set;}
     AnotherClass Member2 {  get { return member2;}
                             set {  ......do some controls....
                                    member2 = .... }

}


Насколько я знаю (но, возможно, я ошибаюсь), независимо от того, что я делаю в методе Member2.set ,
если я использую Member2. get, я получаю ссылку на частный объект member2 , и с его помощью я могу обойти элементы управления, сделанные в методе доступа Member2.set . Или есть какой-то скрытый механизм управления, который мешает мне использовать ссылку таким образом, как только я объявлю ссылку member2 закрытой ?

Что я уже пробовал:

безуспешно заглянул на сайт в поисках ответа

1 Ответов

Рейтинг:
8

OriginalGriff

Нет, если вы возвращаете ссылку, то это ссылка, и вызывающий может делать с ней все, что ему заблагорассудится.

Если вы хотите ограничить доступ к его внутренним функциям, вам нужно полностью инкапсулировать его и предоставить свойства и / или методы, чтобы предоставить доступ только к тем функциям, к которым вы хотите получить доступ.

И, пожалуйста, четко укажите свой доступ!

public class MyClass {
 
     private string       member1;
     private AnotherClass member2;
 
     public string       Member1 {  get; set;}
     public AnotherClass Member2 {  get { return member2;}
                                    set {  ......do some controls....
                                          member2 = .... }
}