Индексатор с параметром enum -- баг в CLR?
От: diamondio  
Дата: 08.10.07 09:26
Оценка:
Добрый день!

Столкнулись со следующей ситуацией:

Есть базовый класс, содержащий индексатор с параметром int:
    public class MyBase
    {
        public string this[int en] { get { return "Int"; } }
    }


и наследник, содержащий индексатор с параметром enum:
    public class MyClass : MyBase
    {
        public string this[MyEnum en] { get { return "Enum"; } }
    }


При попытке использовать индексаторы _всегда_ вызывается this[MyEnum en]:
            MyClass c = new MyClass();
            Console.WriteLine("Enum: " + c[MyEnum.A]);
            Console.WriteLine("Int: " + c[0]);


Enum: Enum
Int: Enum


Собственно вопрос -- почему такое происходит?

Если добавить в MyClass определение нового индексатора код начинает вести себя нормально:
public string new this[int i] { { get { return base[i];} } }


Поведение устойчиво воспроизводится на .NET 1.1 и 2.0.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.