Перечисления C# как параметры функции?

Mac OS X ABI требует выравнивания стека по 16 байт, прежде чем вызывать функцию.

Если ваш код работает, вам просто повезло, и это объясняет, почему вы получаете сегментацию e ошибка при изменении предыдущих разделов кода.

Поэтому вам необходимо убедиться, что стек выровнен по 16-байтовой границе. Я уже несколько раз ответил на аналогичный вопрос:

Как напечатать argv [0] в NASM?

Интересная часть:

; Align stack on a 16 bytes boundary
mov     ebp,                esp
and     esp,                0xFFFFFFF0

Обязательно прочитайте полный ответ, хотя ...

19
задан TK. 29 January 2009 в 15:40
поделиться

6 ответов

Это!

        public void Foo(Enum e)
        {
            var names = Enum.GetNames(e.GetType());

            foreach (var name in names)
            {
                // do something!
            }
        }   

РЕДАКТИРОВАНИЕ: Мое плохое, Вы сделали , говорят , выполняют итерации .

Примечание: Я знаю, что мог просто сделать GetNames () вызов в моем foreach операторе, но я предпочитаю присваивать тот тип вещи к вызову метода сначала, поскольку это удобно для отладки.

28
ответ дан 30 November 2019 в 03:08
поделиться

Используйте Перечисление. GetNames (typeof (e)) метод, это возвратит массив строк с именами.

можно также использовать Перечисление. GetValues для получения значений дубликата.

Редактирование - Возгласы - при передаче параметра как Перечисления необходимо будет использовать e. GetType () вместо typeof (), который Вы использовали бы при передаче параметра в как фактическое Перечислимое имя типа.

3
ответ дан 30 November 2019 в 03:08
поделиться

Вы имеете в виду что-то как Перечисление. GetNames?

3
ответ дан 30 November 2019 в 03:08
поделиться

Перечисление. Перечисление GetValues. GetNames

так что-то как...

foreach(e1 value in Enum.GetValues(typeof(e1)))
3
ответ дан 30 November 2019 в 03:08
поделиться

Как это:

    public void myFunc(Enum e)
    {
        foreach (var name in Enum.GetNames(typeof(e)))
        {
            Console.WriteLine(name);
        }
    }
2
ответ дан 30 November 2019 в 03:08
поделиться

правильно:

public void myFunc(Enum e)
{
    foreach (var name in Enum.GetNames(e.GetTye()))
    {
        Console.WriteLine(name);
    }
}
1
ответ дан 30 November 2019 в 03:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: