如何获得第一个枚举值,而不管符号

本文关键字:不管 符号 何获得 第一个 枚举 | 更新日期: 2023-09-27 17:53:34

如何获得第一个enum成员仅使用其类型,而不管底层值是正的还是负的?

让我们假设我有一个这样的enum:

public enum GamePeriod
{
    Unknown = -100,
    PreGame = 0,
    Q1 = 1,
    Q2 = 2,
    Q3 = 3,
    Q4 = 4,
    OT = 5,
    Completed = 6,
}

我怎么能确保总是得到未知?不管它的值是-1,-10,-100,100,666还是别的什么?

如何获得第一个枚举值,而不管符号

我想你需要这样的东西:

var min = ((GamePeriod[])Enum.GetValues(typeof(GamePeriod))).Min();

似乎已经回答过了:
如果GetFields()不能保证顺序,那么LayoutKind()如何保证顺序?连续工作

Type myType = ...
BindingFlags flags = ...
IEnumerable<FieldInfo> orderedFields = myType.GetFields(flags)
                                             .OrderBy(field => field.MetadataToken);

但是,最好使用其他方式来表示特殊值。
通常为空。

 GamePeriod? p = ...
 if (p == null)
 {
     // special case 
 }
 else
 {
     UseAsNormal(p.Value);
 }