Информация об изменениях

Сообщение Re[4]: Зависит ли порядок выполнения от версий фреймворка и от 29.07.2019 17:39

Изменено 29.07.2019 22:52 Passerby

Re[4]: Зависит ли порядок выполнения от версий фреймворка или C#?
Здравствуйте, Danchik, Вы писали:

D>Здравствуйте, Passerby, Вы писали:


P>>Здравствуйте, Danchik, Вы писали:


D>>>Здравствуйте, Passerby, Вы писали:


P>>>>В программе 2 enum, которые хотелось бы использовать в обобщенной функции следующим образом.

P>>>>foreach (var en in Enum.GetValues(typeof(T)))//T — один из двух enum.
P>>>>Но так возможно только если порядок вывода в foreach тот же, что и в enum. Должен ли объект получаемый typeof(T), иметь один и тот же порядок, независимый от версии фреймворка, C#, компилятора или ничего в спецификации об этом не сказано?

D>>>У вас с этим проблемы? Порядок меняться не должен иначе все к чертям полетит.

D>>>И компилятор тут только сбоку. RTFM https://docs.microsoft.com/ru-ru/dotnet/api/system.enum.getvalues?view=netframework-4.8

D>>>И да, не важно сколько у вас этих enum, вообще.

P>>Увы, в примере по вашей ссылке показано, что порядок вывода элементов не совпадает с порядком их в enum. Либо ошибка в примере, либо сознательно показывается необязательность сохранения порядка.

D>Чтобы я не перчитывал наново для тебя документацию покажи свои энумы. Документация четко говорит об энумах с константными значениями, там они сортируют, как читай. Остальное как эти константы выводит компилятор: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/enum

Это не относится к порядку членов в Type
Re[4]: Зависит ли порядок выполнения от версий фреймворка и
Здравствуйте, Danchik, Вы писали:

D>Здравствуйте, Passerby, Вы писали:


P>>Здравствуйте, Danchik, Вы писали:


D>>>Здравствуйте, Passerby, Вы писали:


P>>>>В программе 2 enum, которые хотелось бы использовать в обобщенной функции следующим образом.

P>>>>foreach (var en in Enum.GetValues(typeof(T)))//T — один из двух enum.
P>>>>Но так возможно только если порядок вывода в foreach тот же, что и в enum. Должен ли объект получаемый typeof(T), иметь один и тот же порядок, независимый от версии фреймворка, C#, компилятора или ничего в спецификации об этом не сказано?

D>>>У вас с этим проблемы? Порядок меняться не должен иначе все к чертям полетит.

D>>>И компилятор тут только сбоку. RTFM https://docs.microsoft.com/ru-ru/dotnet/api/system.enum.getvalues?view=netframework-4.8

D>>>И да, не важно сколько у вас этих enum, вообще.

P>>Увы, в примере по вашей ссылке показано, что порядок вывода элементов не совпадает с порядком их в enum. Либо ошибка в примере, либо сознательно показывается необязательность сохранения порядка.

D>Чтобы я не перчитывал наново для тебя документацию покажи свои энумы. Документация четко говорит об энумах с константными значениями, там они сортируют, как читай. Остальное как эти константы выводит компилятор: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/enum

1. Это не относится к порядку членов в Type.
2. И порядок в самом enum определен? Есть спецификация, указывающая на то, что enum En{a,c,b} не будет преобразован в enum En{a=0,b=3,c=2}?