【发布时间】:2016-04-06 14:08:13
【问题描述】:
我问过How can I get the number of enums as a constant?,我发现在编译期间我无法获取枚举的计数,因为 C# 使用反射来做到这一点。
看了What is reflection and why is it useful?,所以对反射有了非常基本的了解。
要获取枚举数,我可以使用Enum.GetNames(typeof(Item.Type)).Length;,这会在运行时使用反射发生。
我没有看到获取枚举计数所需的任何运行时知识,因为据我所知,在运行时无法更改枚举计数。
为什么 C# 必须使用反射来获取枚举数?为什么编译时不能这样做?
【问题讨论】:
-
有趣,似乎是因为反射只在运行时起作用。
-
@Evorlor 好吧,如果你需要计算枚举,你可以使用集合。枚举用于定义元素而不是用于使用它们。
-
@ehh 他在这个问题中发布了这个问题,并且是一个与这个问题不同的问题。
-
我认为它与普通课程非常相似。如果不使用反射,就无法获得类的属性数量(至少这是我知道的唯一方法),而且我们知道,反射直到运行时才会发生。 为什么你必须使用反射,你可能不得不问.NET的开发人员。
-
“为什么缺少 C# 功能” - 我认为 Eric Lippert 对此有标准答案。
标签: c# reflection enums count compile-time