Получить индекс перечисления

200
01 февраля 2018, 15:16

Имеется перечисление вида:

enum MyControls: ulong { elementONE = 18410924985427079801, elementTWO = 88410924985427079804, elementF = 58410924985427079802};

Так же имеется массив, который инициилизируется при старте так:

MyClass[] mc1 = new MyClass[Enum.GetNames(typeof(MyControls)).Length];

экземпляры myclass добавляются и соответствуют тому же порядку, что описан в mycontrols.

Можно ли как то получить доступ к элементам такого массива, используя запись вида mc1[MyControls.elementF]. ( index elementF == 2)

Интересуют любые способы получения индекса в данном перечисление!

Можно было бы завести дополнительное перечисление, например

enum MyControlsNames = {elementONE, elementTWO, elementF }

и свободно писать mc1[MyControlsNames.elementF], но интересует 1й способ.

Благодарю за ответы!

Answer 1

Сделайте не массив, а Dictionary

var mc1 = new Dictionary<MyControls,MyClass>();
mc1.Add(MyControls.elementF, new MyClass(MyControls.elementF));
Answer 2

Можно перегрузить индексатор

class MyClass {
    public int this[ulong i]
    {
        get
        {
            // ваш код извлечения необходимой записи
        }
    }
}

Почитать про перегрузку индексаторов можно тут и тут.

READ ALSO
AES-256 Padding (C#)

AES-256 Padding (C#)

ЗдравствуйтеПомогите пожалуйста вычислить CBC Padding (AES-256)

226
async/await за кулисами

async/await за кулисами

Рихтер приводит вот такой код:

241
Events в консоле c#

Events в консоле c#

Вопрос: как реализовать обработчик событий (именно FormClosed, или любой аналог который сработает на закрытии) в консоле или там где нет формы?

194