Когда мы должны использовать частные переменные и когда мы должны использовать свойства. Нужно ли использовать вспомогательные поля в одном классе? - PullRequest
2 голосов
/ 26 мая 2010

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

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

Предположим, я использую сценарий, например, вставка в базу данных.Я создаю некоторые параметры, которые нужно инициализировать.

Я создаю 10 частных переменных и их соответствующие общедоступные свойства, которые задаются как

private string name;
public string Name
   {
     get{return name;}
      set{name=value;}
   }

и так далее.В этих случаях, упомянутых выше, для чего должны использоваться внутренние переменные или свойства.

И в таких случаях, как

public string Name
   {
     get{return name;}
     set{name=value>5?5:0;} //or any action can be done. this is just an eg.
   }

В таких случаях, что следует делать.

Чтоэто заключение

Я действительно хотел спросить это.Должны ли мы использовать переменные внутри этого класса или нет, или мы должны использовать свойства везде внутри одного и того же класса.

Ответы [ 6 ]

4 голосов
/ 26 мая 2010

Если вы используете автоматически внедряемые свойства , то поле будет скрыто, поэтому вы будете вынуждены использовать это свойство даже в классе, где это свойство определено. Автоматически реализованные свойства - хорошая идея, если только вам не нужно добавлять логику в метод получения / установки.

1 голос
/ 26 мая 2010

Сделано вещи более читабельными:

  • Я выставляю свои данные всегда через свойства.
  • Если мне не нужна дополнительная логика (например, проверка), я использую неявные свойства. Таким образом, нет резервного поля, и я не могу получить к нему доступ случайно. Если мне нужно добавить некоторую дополнительную логику, я легко могу изменить неявное свойство на «традиционное». Поскольку я использую свойство везде, мне не нужно беспокоиться о том, что моя дополнительная логика не вызывается.
  • Если мне нужно что-то дополнительное (например, проверка), тогда у меня есть личное поле поддержки, но я получаю доступ к этому полю только в теле свойства (методы доступа get / set). Опять же, мне не нужно беспокоиться, если я изменю что-то в свойстве: мой код всегда будет использовать одну и ту же логику.
  • Единственная причина, по которой я не называю свойство, по моему мнению, заключается в том, что по какой-то причине я действительно не хочу вызывать какую-либо дополнительную логику, но это кажется опасной вещью, поэтому я скорее избегаю ее ...
1 голос
/ 26 мая 2010

Если для закрытой переменной используется только контейнер для хранения, вы можете использовать:

public string Name {get; set;}

ИМХО, никогда не следует делать переменные общедоступными - всегда используйте свойства, чтобы вы могли добавить ограничения или изменить поведение позже без изменения интерфейса.

0 голосов
/ 04 июля 2012

Нам требуются явные закрытые переменные в некоторых ситуациях, таких как проверка перед установкой. Иногда нам также необходимо преобразовать ввод, например, отформатировать ввод.

0 голосов
/ 26 мая 2010

Вы никогда не должны выставлять публичные переменные без веской причины. Трудно сказать никогда, потому что, если вы пытаетесь взаимодействовать с компонентами типа comm, вам тоже может понадобиться.

Все, что публикуется, должно быть собственностью. Почему это так?

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

Я лично использую свойства и создаю переменные-члены, только когда хочу, чтобы свойство делало больше, чем получение или установка (так как это легко сделать в C # 3.0 со свойствами ярлыков).

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

0 голосов
/ 26 мая 2010

Я никогда не выставляю публичные переменные. Зачем? Потому что я не могу накладывать на них ограничения, тогда как могу, когда использую свойства. Сначала я могу проверить значение, если оно соответствует моим ограничениям (например, адрес электронной почты), а затем сохранить его. В противном случае я выбрасываю исключение.

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