Причина префикса get в c # - PullRequest
0 голосов
/ 15 мая 2018

Учитывая, что в c # у нас есть специальный синтаксис для свойств с геттерами и сеттерами, почему некоторые свойства доступны с помощью методов (обычно с префиксом «Get») вместо геттера?

например, почему это так:

var properties = object
    .GetType()
    .GetProperties();

вместо использования геттера, например:

var properties = object
    .Type
    .Properties

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

В Руководстве по проектированию для разработки библиотек классов есть следующее:

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

GetType() определяется на object, базовый тип для всех типов. Вы не хотите, чтобы каждый тип всегда имел свойство Type.

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

Насколько мне известно, для перевода внутренних метаданных CLR в объекты PropertyInfo требуется некоторый перевод.

0 голосов
/ 15 мая 2018

Ответ GetProperties() прост: он возвращает новый массив свойств (отфильтрованная (только общедоступная) копия внутреннего массива свойств) для каждого вызова и из MSDN :

Использовать метод, а не свойство, в следующих ситуациях.

Операция возвращает копию внутреннего состояния (это не включает копии объектов типа значения, возвращаемых в стеке).).

и

Операция возвращает массив.

Для GetType() Я не знаю.

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