Свойство против функции (в частности .NET)
Я читал некоторые дискуссии на эту тему, и есть кое-что, чего я просто не понимаю.
Наиболее распространенный ответ выглядит так: используйте свойство ReadOnly для возврата кэшированных данных, используйте функцию для возврата не кэшированных данных. Не используйте свойство WriteOnly вообще, потому что «оно не имеет смысла».
Для этого нет причин производительности. В IL MyProperty существует какget_MyProperty
а такжеset_MyProperty
методы. Единственная причина, по-видимому, заключается в том, что вышеуказанный ответ должен быть принят.
Хорошо, тогда зачем вообще работать с ReadOnly Properties? Почему бы просто не сделать переменную Public вместо Private? Тогда зачемсвойства вообще? Кэшированные данные -> Открытая переменная, не кешированные данные -> Функция, запись данных -> Sub
Давайте забудем все вышеизложенное и будем использовать свойства в качестве удобной функции? Один «элемент» для получения и установки данных. Используйте здравый смысл, чтобы знать, не будет ли Get возвращать кэшированные данные (что может привести к задержке).
Я вижу, что люди более или менее согласны с тем, что недвижимость - лучший вариант. Я просто не мог понять, почему я нашел так много дискуссий, где люди выступали против свойств.