Как использовать индексатор реализуемый через интерфейс с параметрами?

Интерфейс:

 internal interface IMyDict<TKey, TValue>
 {
     // ...
     string this[int index] { get; }
     // ...
 }

Реализация:

 class MyDictionary<TKey, TValue> : IMyDict<TKey, TValue>
 {
     string this[int i] => $"{keys[i]}: {values[i]}";
     string IMyDict<TKey, TValue>.this[int i] => $"{keys[i]}: {values[i]}";
     public override string ToString()
     {
         string str = "";
         if (length != 0)
         {
             for (int i = 0; i < length; i++)
             {
                 str = this[i] + ", ";
             }
         }
         return str;
     }
 }

Т.е. в реализации два индексатора - дополнительный и реализуемый. Хотелось бы понять как использовать реализуемый. В коде при переопределении метода ToString() я как раз вынужден из-за отсутствия этого знания использовать лишний(дополнительный) индексатор. Как использовать индексатор реализуемый через интерфейс с параметрами?


Ответы (1 шт):

Автор решения: Евгений

нужно привести объект к интерфейсу, тогда будет использована явная реализация:

((IMyDict<TKey, TValue>)this)[i]
→ Ссылка