2015-03-13 6 views
1

В C# свойства могут использоваться для возврата или сброса значений частных членов класса. Но люди могут также определить методы их выполнения, поэтому я задаю следующие вопросы:Зачем нужны свойства в C#?

  1. Зачем вводить свойства, почему бы вам не просто использовать методы?
  2. Частные члены предназначены для доступа только класса. то почему свойства, определенные для изменения частного члена?
+7

Зачем беспокоиться о внедрении C, Java или C#, почему бы просто не использовать Assembly? – Mephy

+0

На мой взгляд, свойства C# уменьшают читаемость кода, есть причина, по которой перезаписываемые операторы являются злыми ... Там отлично подходит для математической библиотеки, кроме того, что они не должны использоваться. Свойства поощряют плохой код. –

+4

@ AnthonyRaimondo, что перегрузка оператора связана со свойствами? – Blorgbeard

ответ

3

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

Зачем использовать свойство:

  • Свойство можно использовать в привязке данных. Например, в ASP.Net MVC вы используете свойства как часть моделей.
  • Свойства обеспечивают мелкозернистый контроль доступа. Например, вы можете иметь свойства только для чтения, просто предоставляя getter.
  • Это помогает при отладке. Например, вы можете установить точку останова на свойстве, и среда IDE будет ломаться при касании значения свойства.
+3

Свойства компилируются с использованием методов доступа, строго говоря. Они удобны для публичных геттеров и частных сеттеров. Это, главным образом, синтаксический сахар, если вы используете их исключительно с одним опорным полем. –

+1

* Строго говоря, эти методы доступа почти всегда встроены в прямой доступ к полям в любом случае. Я действительно не думаю, что это относится к этому вопросу, как компилятор/джиттер преобразует абстракцию языка C# свойства в машинный код. – Blorgbeard

+1

@Blorgbeard это правда, но я думаю, что семантические различия между свойствами и методами важнее технических различий. – Andy

Смежные вопросы