c# - CSharp 通过可空枚举进行枚举

标签 c# enums

一段代码抵千字...

public enum enTest { a, b, c }

public void PrintEnum<T>()
{
    foreach (var E in Enum.GetValues(typeof(T)))
    Debug.WriteLine(E.ToString());
}

PrintEnum<enTest>();
PrintEnum<enTest?>();    // This will cause failure in Enum.GetValues()

上面是从一个更大的问题简化来说明失败的。

有谁知道当有人向我传递 Nullable Enum 时我如何遍历(或获取其中的所有值)?

提前致谢。

最佳答案

这个怎么样?

public static void PrintEnum<T>()
        {
            Type t = typeof (T);
            if (t.IsGenericType)
            {
                //Assume it's a nullable enum
                t = typeof (T).GenericTypeArguments[0];
            }

            foreach (var E in Enum.GetValues(t))
                Console.WriteLine(E.ToString());
        }

关于c# - CSharp 通过可空枚举进行枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31070654/

相关文章:

c# - Unity3D。试图在未经授权的情况下为对象发送命令

c# - 奥尔良工作分配

c# - asp.net如何对GridView中的数据进行排序

c# - 如何通过反射将枚举值传递给类的构造函数?

c - C 中的枚举类型变量声明

c# - 从 Azure 共享网站创建 Azure 媒体服务作业

c# - 如何传递具有可变数量参数的 Func<T>

java - 设置类变量的最佳方法是什么,它是基于 java 中依赖枚举的某些条件逻辑的枚举?

enums - 什么设置导致 ENUM 在 MySQL Workbench 中不可用?

ruby-on-rails - Rails 迁移,从字符串转换为枚举