为什么我不能将类型'T'强制转换为int T:System.Enum?

时间:2020-05-28 13:56:51

标签: c# generics enums

我在这里不明白什么?

我可以要求T是一个枚举,但是我不能将T类型的变量强制转换为int。

public static List<int> EnumToInts<T>() where T : System.Enum
{ ... }

我可以这样做:

T te = (T)Enum.Parse(typeof(T), name);

但是如果我尝试将te强制转换为int

int ti = (int)te

我知道

'无法将T类型转换为int'

没关系

var e = Enum.Parse(typeof(T), name);
int i = (int)e;

但是这里的int类型不是:

T te = (T)Enum.Parse(typeof(T), name);
int ti = (int)te;

这是怎么了?我不明白吗?

        public static List<int> EnumToInts<T>() where T : System.Enum
        {
            List<int> l = new List<int>();

            Type type = typeof(T);

            string[] names = Enum.GetNames(type);

            foreach (var name in names)
            {

                var e = Enum.Parse(type, name);
                l.Add((int)e);

                T te = (T)Enum.Parse(type, name);
                l.Add((int)te);

            }

            return l;
        }

0 个答案:

没有答案