C# 为什么Enum.GetValues优于迭代?

C# 为什么Enum.GetValues优于迭代?,c#,enums,enumeration,C#,Enums,Enumeration,我正在读答案 顺便说一句,增加值不是枚举 枚举的值。你应该这样做 我将使用Enum.GetValues(typeof(Suit))代替 为什么??GetValues如何比迭代更好?看起来您误解了这里的上下文 您所指答案的海报建议使用GetNames迭代枚举的名称。但他说,当涉及到值时,对GetValues进行枚举比递增要好 所以一个并不比另一个好,它们有不同的用途,答案的作者概括了这一点。正如@knittl所说: 因为枚举中可能有“洞”。考虑枚举e{a=1,b= 2,C=4}。递增将产生A、B、

我正在读答案

顺便说一句,增加值不是枚举 枚举的值。你应该这样做

我将使用
Enum.GetValues(typeof(Suit))
代替


为什么??
GetValues
如何比迭代更好?

看起来您误解了这里的上下文

您所指答案的海报建议使用
GetNames
迭代枚举的名称。但他说,当涉及到值时,对
GetValues
进行枚举比递增要好

所以一个并不比另一个好,它们有不同的用途,答案的作者概括了这一点。

正如@knittl所说:

因为枚举中可能有“洞”。考虑<强>枚举e{a=1,b= 2,C=4}
。递增将产生A、B、3、C全部枚举 值将产生A、B、C

感谢@Andrei指出:

枚举可以用任何值定义。即使有。所以 递增可能会提供很多枚举中没有的内容。 GetValues保证只返回相关的值


它在哪里说了这样的话?我没有看到任何人在链接的问题或其中一个答案中增加值。所以我不明白。在GetValue上枚举要比递增好。为什么?@adoomedknight:因为你的枚举中可能有“洞”。考虑
枚举E{A=1,B=2,C=4}
。递增将产生
A,B,3,C
,枚举所有值将产生
A,B,C
@adoomedknight,再加上knittl所说的,enum可以用任何值定义。即使有。因此,递增可能会提供很多枚举中没有的内容<但是,code>GetValues保证只返回相关的值