Должен ли я использовать частные поля в своем классе C # или общедоступные свойства достаточно хороши? - PullRequest
0 голосов
/ 31 января 2019

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

Вот мой класс Person, например:

Я знаю, что это полезно дляиспользовать приватные поля, когда я хочу быстро получить FullName .. На самом деле это всего лишь пример , где я добавляю код добавления в некоторые из моих методов получения, поэтому я хотел бы избежать закрытых полей, чтобы я мог начатьиспользование открытых свойств, потому что в любом случае в фоновом режиме будет создано личное поле?

 private string _firstName;
 private string _lastName;

 public string FullName
 {
    get { return _firstName + _lastName; }
 }

В любом случае, можно ли сделать что-то подобное, удалить личные поля -> добавить только общие свойства?Я думаю, что нет проблем с этим кодом ниже ..?

 public string FirstName { get; set; }
 public string LastName  { get; set; }

 public string FullName
 {
   get { return FirstName + LastName; }
 }

Должен ли я предпочесть пример 2?Я имею в виду, есть ли проблемы, если я останусь с примером 2?Потому что я хочу, чтобы мои классы выглядели чище без личных полей:)

1 Ответ

0 голосов
/ 31 января 2019

Ответ здесь будет зависеть от того, хотите ли вы имя / фамилию для публичного API.Если вы делаете: 2 идеально подходит для вашего удобства печати.Во время выполнения, благодаря магии JIT, 1 и 2 будут в значительной степени неразличимы (за исключением проблемы доступности), так что вы могли бы также использовать наиболее удобную и выразительную форму, которая обычно: 2.

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

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 10 *.* или публично, но доступно только для записи внутри типа:

public string FirstName { get; private set; }
public string LastName  { get; private set; }

public string FullName => FirstName + LastName;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...