какая польза от инкапсуляции здесь - PullRequest
1 голос
/ 16 марта 2020

Какая польза от конструктора здесь?

Это скрипт A:

[SerializeField]
private LobbyFunction _lobbyFunction;
public  LobbyFunction LobbyFunction
{
    get { return _lobbyFunction; }
}

Это скрипт B:

private void Start()
{
    GameObject lobbyCanvasGO = CanvasManager.Instance.LobbyFunction.gameObject;
    if (lobbyCanvasGO == null) return;
}

что если я решу не использовать инкапсуляцию? нет ошибок, я думаю. Любая помощь будет принята с благодарностью, спасибо!

edit: Я предполагаю, что использование здесь инкапсуляции делает var только для чтения, только get ... и, следовательно, увеличивает безопасность, люди извне не могут изменить значение, это ответ?

1 Ответ

0 голосов
/ 16 марта 2020

Это не конструктор, а свойство

Свойство - это элемент, который предоставляет гибкий механизм для чтения, записи или вычисления значения частного поля. Свойства можно использовать так, как если бы они были опубликованными c членами данных, но на самом деле это специальные методы, называемые методами доступа. Это позволяет легко получать доступ к данным, и в то же время способствует повышению безопасности и гибкости методов.

В вашем случае он предназначен для предоставления Только для чтения доступа к private поддержке поле _lobbyFunction, поэтому никакой другой класс не может изменить его значение, так как только классу "A", содержащему _lobbyFunction, разрешено присваивать его.

Кстати, как у вас есть, это эквивалентно простой записи

public LobbyFunction LobbyFunction { get; private set; }

без необходимости использования вспомогательного поля. Тогда только самому содержащему классу "A" разрешено присваивать значение, тогда как все остальные могут его прочитать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...