pavelkarinin
@pavelkarinin
Full Stack Web Developer

Параметризованное свойство в с# — как задать?

Дублирую преамбулу от моего предыдущего вопроса.
Чтобы было ясно от куда такой вопрос: после продолжительного опыта работы на vb.net (как моего первого языка), относительно недавно у меня появилась необходимость, а главное - возможность осваивать с# (от версии 7.0) При этом, имея опыт работы с JavaScript, особых сложностей с освоением синтаксиса c# у меня не возникло. Безусловно, пока еще постоянно провожу аналогии с vb.net, поскольку мне часто не хватает очень многих его особенностей, поддержка которых отсутствует в с# априори. И вот, об одной такой особенности я хотел бы спросить у знатоков.

В vb.net я могу определить и успешно использовать свойства с параметрами, причем определить параметризованные свойства можно не только в классах, но и в интерфейсах, при этом параметры могут быть объявлены необязательными. Это очень удобная особенность, когда необходимо вернуть (или задать) значение для свойства, которое от чего-то зависит.
Вот пример на vb.net:
'''<summary>Отрасль промышленности</summary>
Public NotInheritable Class Industry : Implements IEnum(Of Byte)

	'''<summary>Код отраслевого направления</summary>
	Public ReadOnly Property Code As Byte Implements IEnum(Of Byte).ID

	'''<summary>Наименование отраслевого направления</summary>
	'''<param name="Language">Язык, на котором следует вернуть наименование. Если язык не задан или он не поддерживается, то используется язык, назначенный в контекст текущего потока.</param>
	Public ReadOnly Property Name(Optional language As Language = Nothing) As String Implements IEnum(Of Byte).Name
		Get
			Return ...
		End Get
	End Property

	'и так далее...

End Class


Лирическое отступление:
Я уже понял, что c# сильно уступает языку vb.net с точки зрения семантики, но не ожидал, что в с# есть такое сложности связанные с казалось бы элементарными вещами. И то, что в vb.net делается "одной строкой", то на c# - это сплошная эквилибристика. Единственный плюс, который я для себя отметил - это компактность кода, которая продиктована именно строением синтаксических конструкций, а вовсе не чем-то еще. В итоге прихожу к выводу, что в 99.(9)% vb.net не менее сильный язык, чем c#. И мой вопрос - это лишь один из немногих на эту тему.

Возвращаюсь к вопросу:
Я посмотрел про индексированные свойства, однако не понял как их реализовать применительно случаю описанному мною выше. Правильно ли я понимаю, что такую функциональную возможность необходимо реализовать с использованием индексов?, если да, то как? или я еще чего-то не откопал?
  • Вопрос задан
  • 654 просмотра
Решения вопроса 1
devspec
@devspec
Помогло? Отметь решением
Полностью соглашусь с тем, что красивого синтаксического сахара в VB .NET больше. А возможности те же, потому как всё в итоге компилируется в один и тот же результат.
Насчет свойств с параметрами... В C# такого без плясок с бубном нет, но почему бы не использовать обычную функцию?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы