public ArrayList choiceArray = new ArrayList();
public UC_RadioX Item(int index)
        {
            return (UC_RadioX)choiceArray[index];
        }

Когда я использовал:

    cc.Item(0).Checked = true;
    cc.Item(1).Checked = true;

Как изменить метод на свойства?

c#
0
monkey_boys 23 Дек 2009 в 06:48

2 ответа

Вы можете определить Индексаторы следующим образом:

// ...
public ArrayList choiceArray = new ArrayList();
public UC_RadioX this[int index]
{
    get
    {
        return (UC_RadioX)choiceArray[index];
    }
}
// ...

Это позволит вам использовать нотацию [] в самом экземпляре класса:

cc[0].Checked = true;
cc[1].Checked = true;
2
Christian C. Salvadó 23 Дек 2009 в 06:57
Можно изменить на этот cc.Item[0].Checked = true;
 – 
monkey_boys
23 Дек 2009 в 07:08

Вот пример:

http://msdn.microsoft.com/en-us/library/2549tw02.aspx

Основываясь на вашем ответе на другой ответ, я думаю, вам было бы проще делать то, что вы пытаетесь сделать со свойством public List<UC_RadioX> Item { get;set;}, тогда вы бы напрямую обращались к объекту UC_RadioX и могли бы получить к нему доступ через индексатор. Это будет работать в C# 2.0 и выше. Автоматически реализуемое свойство {get;set;} — это C# 3.0 и выше.

Доступ к этим элементам внутри объекта, созданного как cc, может быть выполнен следующим образом:

UC_RadioX rx = cc.Item[0];
bool good = cc.Item[1].checked;
1
Jim Schubert 25 Дек 2009 в 06:53
Кроме того, общепринятой практикой является множественное число имен коллекций. Я предполагаю, однако, что вы пытаетесь изменить текущий код как можно меньше.
 – 
Jim Schubert
25 Дек 2009 в 07:12