Подтвердить что ты не робот

Почему лучше использовать функции чтения стихов readonly?

Я вижу небольшую функциональную разницу между использованием свойства

public readonly property foo as string
  get
    return bar
  end get
end property

или функции

public function foo() as string
  return bar
end function

Почему я хочу использовать одну форму над другой?

Спасибо!

4b9b3361

Ответ 1

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

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

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

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

Для заинтересованных - вот статья

Выбрать между методами и свойствами

Ответ 2

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

Ответ 3

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

Ответ 4

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

Как следствие, убедитесь, что значения свойств не изменяются без какого-либо внешнего действия, потому что в противном случае отладчик испортит вашу программу.

Ответ 5

Насколько я знаю, все это компилируется в одно и то же. Свойство в IL для .NET - это просто функция getPropertyName и setPropertyName для свойства с именем PropertyName.

Итак, это действительно вопрос стиля в этом отношении. Он просто читает лучше, чтобы увидеть следующее:

person.Address.Street;

а не

person.Address().Street();

Итак, в некотором роде, это действительно вопрос эстетики кода.

К сожалению, для меня в .NET С# не так элегантно, как Ruby, в том, что () всегда является необязательным.

Ответ 6

Если вы основываетесь на Руководстве по разработке Framework, вы должны использовать метод только тогда, когда вы фактически выполняете действие или получаете доступ к ресурсам, которые могут быть дорогими в использовании (база данных, сеть).

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

Брэд Абрамс на самом деле написал статью об этом и даже размещен на MSDN .

Я настоятельно рекомендую вам купить книгу Руководство по разработке каркаса. Это необходимо прочитать для каждого разработчика.

Ответ 7

Одна из причин выбора свойства ReadOnly над функцией заключается в том, что во время отладки времени выполнения можно легко заметить значения свойств. Вы не можете получить результат функции без вызова функции.

Стоит подумать, стоит ли операция дорого и если она выбирает функцию над свойством. Но если это не так, выбор свойств делает работу с объектом во время сеанса отладки немного проще.

Ответ 8

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

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

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