Есть ли преимущество в использовании свойств для объектов, на которые я ссылаюсь из наследуемых классов

#c#

#c#

Вопрос:

Вот код, который у меня есть:

 public class BaseButtonSheet : PopupBase
{
    public BaseButtonSheet()
    {
        BindingContext = new BaseButtonSheetViewModel();
        contentStack.Children.Add(new PopupHeaderLabel("Screen Options"));
        grid.Children.Add(new BaseButton("Add Deck", "AddCmd"), 0, 0);
        contentStack.Children.Add(grid);
    }
}

public class PopupBase : Rg.Plugins.Popup.Pages.PopupPage
{
    public StackLayout contentStack;
    public Grid grid;

    public PopupBase()
    {
 

В чем я не уверен, так это в том, является ли это более распространенным и есть ли преимущество в создании contentStack и grid в качестве свойств, потому что я буду обращаться к ним из другого класса.

Комментарии:

1. Эмпирическое правило гласит, что общедоступные поля являются плохими (если они не являются константами или статическими полями только для чтения), и все, что является общедоступным, должно быть инкапсулировано в свойство.

Ответ №1:

Поскольку они общедоступны, я бы использовал свойства.

Смотрите это:

Как правило, вы должны использовать поля только для переменных, которые имеют закрытый или защищенный доступ. Данные, которые ваш класс предоставляет клиентскому коду, должны предоставляться с помощью методов, свойств и индексаторов

Руководство по программированию на C #, Microsoft

Ответ №2:

Помимо рекомендаций Microsoft, есть преимущества для переноса доступа к переменной в properties.

Вы можете изменить способ реализации свойства в наследующем классе.

например, вы могли бы иметь AdvancedButtonSheet и переопределить способ извлечения свойства contentStack, предоставляя дополнительные преимущества для ваших расширенных кнопок, просто вызвав свойство «same».