Нет, DefaultMemberAttribute
используется такими языками, как VB.NET, чтобы выяснить, к какому члену обращаются по умолчанию, если на объект не ссылаются, то есть член, вызванный InvokeMember
. Как вы заметили, это часто используется вместе с индексаторами, но не используется C # напрямую (если вы явно не используете InvokeMember
).
Тем не менее, в интересах других языков .NET, C # выдает DefaultMemberAttribute
для индексатора класса (если он есть), как указано MSDN :
Компилятор C # выдает
DefaultMemberAttribute для любого типа
содержащий индексатор. В C # это
ошибка для ручного определения типа
с атрибутом DefaultMemberAttribute, если
Тип также объявляет индексатор.
Я думаю, что MSDN вводит в заблуждение, часто ссылаясь на индексаторы в комментариях, но затем приводит пример, который не использует индексатор. Чтобы уточнить, членом по умолчанию может быть что угодно, но C # предоставляет специальное поведение для индексаторов, передавая вам атрибут (если индексатор существует), за исключением всех других случаев использования.