Дублирую преамбулу от моего
предыдущего вопроса.
Чтобы было ясно от куда такой вопрос: после продолжительного опыта работы на 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#. И мой вопрос - это лишь один из немногих на эту тему.
Возвращаюсь к вопросу:
Я посмотрел про индексированные свойства, однако не понял как их реализовать применительно случаю описанному мною выше. Правильно ли я понимаю, что такую функциональную возможность необходимо реализовать с использованием индексов?, если да, то как? или я еще чего-то не откопал?