2013-09-13 2 views
0

Я хочу индексатор, но типы сеттера и геттер должны быть разными.Различные типы для геттера и сеттера Indexer

public Foo this[string key] 
{ 
    get 
    { 
     return FindFoo(key); 
    } 
} 
public Bar this[string key] 
{ 
    set 
    { 
     DoMagic(key, value); 
    } 
} 

Когда я пытаюсь:

myClass["hello"] = coolBar; 

Он говорит: вызов неоднозначен

Есть ли вообще это делать?

ответ

6

Я хочу индексатора, но типы сеттера и геттер должны быть разными.

Вы не можете этого сделать, в основном - не тогда, когда два индексатора имеют одинаковую подпись.

Даже если вы можете, я бы сказал, что это будет довольно странный дизайн, который удивит пользователей вашего API.

Соответствующий бит C# спецификации раздел 10,9:

Сигнатура индексатора должна отличаться от сигнатур всех других индексаторов, объявленных в том же классе.

+0

Jon, Мне всегда интересно, как это возможно, вы можете быстро найти, какой раздел вы ищете в спецификации C#? Вы запомнили все спецификации :)? –

+0

@ SonerGönül: Я искал «индексатор» в оглавлении - на самом деле это было не так сложно :) (у меня не было ссылки в первой версии - это было отредактировано в.) –

 Смежные вопросы

  • Нет связанных вопросов^_^