Задать вопрос
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#. И мой вопрос - это лишь один из немногих на эту тему.

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

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

Похожие вопросы
ITFB Group Москва
от 200 000 до 300 000 ₽
Альфа-Банк Москва
от 200 000 до 350 000 ₽
EuroAuto Санкт-Петербург
от 200 000 ₽