Nikhil Nitesh Thakur Ответов: 2

Тип "А" уже содержит определение для "элемента"


class A
{
    public int Item()
    {
        throw new NotImplementedException();
    }

    public int this[int x] // error CS0102: The type 'A' already contains a definition for 'Item'
    {
        get { throw new NotImplementedException(); }
    }
}

Спасибо за вашу помощь....

переграды
Нихил

benjamine

Ответ здесь:
http://social.msdn.microsoft.com/forums/en-US/csharplanguage/thread/dbd2b263-824c-4f5b-ba18-2f6d117c8ad1/

C# автоматически создает свойство "Item" для индексаторов, но вы можете переопределить его имя с помощью атрибута:

[Система.Во время выполнения.Услуги компиляторов.IndexerName("MyItems"]
публичный элемент this[int row, int col] { ... }

imendan

Большое спасибо!

2 Ответов

Рейтинг:
2

OriginalGriff

"это" является ключевым словом - вы не можете назвать какой-либо метод, поле или свойство "это".
Измените имя, и все будет хорошо.


Рейтинг:
13

Toli Cuturicu

Да, это правда.
Оба ваших члена называются Item.
Существует метод, который называется Item и индексатор... (все индексаторы вызываются автоматически Item)
Просто взгляните на документацию для класса List например. Вот посмотрите на членов клуба. Ты бы видел Item Нажмите на нее, и вы увидите документацию об индексаторе!