c#枚举是不是可以出现重复值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#枚举是不是可以出现重复值相关的知识,希望对你有一定的参考价值。

参考技术A 可以,
设置的枚举能包含重复常数值。例如,可以将一个值
0
与两个不同的标识符
参考技术B 就和数组一样,只要下面的下标不同,同一个值不影响的,因为计算机会自己识别,每一个位置只有唯一的值,取值的时候指定位置就可以了。 参考技术C publicenumtestenum

aa,
bb,
cc,
dd
;
foreach
(testenum
item
in
enum.getvalues(typeof(testenum)))


enum.getvalues(typeof(枚举的名称));可以获得指定枚举的枚举值。
enum.getnames(typeof(枚举的名称));可以获得指定枚举的枚举名称。

将枚举值作为参数的通用 C# 方法[重复]

【中文标题】将枚举值作为参数的通用 C# 方法[重复]【英文标题】:Generic C# method taking where the enum value as a parameter [duplicate] 【发布时间】:2011-09-08 11:02:05 【问题描述】:

可能重复:Create Generic method constraining T to an Enum

给定一个只对枚举值进行操作的通用方法

static void <T> method(T enum) where T ?????

     // do something with enum...

我如何限制 T 以便只接受枚举值?我试过使用struct,但是这不允许使用可以为空的枚举类型调用我的方法。

【问题讨论】:

【参考方案1】:

枚举类型的泛型约束在 C# 中是不可能的,但在 IL 中是可能的。看看 Jon Skeet 的项目,Unconstrained Melody,它将允许您将泛型方法限制为枚举。

【讨论】:

这是一个示例,说明如何使用 IL 而不是库来让您自己执行此操作,但同样非常有趣!【参考方案2】:

在 C# 中你不能。出于某种原因,我不知道 C# 规范明确禁止 System.Enum 作为约束。

即使那样它也不会接受可为空的枚举,因为可为空的枚举不是枚举。

【讨论】:

以上是关于c#枚举是不是可以出现重复值的主要内容,如果未能解决你的问题,请参考以下文章

在 JSON (C#) 中序列化枚举值 [重复]

在c#中标记枚举[重复]

C#中的枚举类型约束[重复]

C#中的枚举类型约束[重复]

在 C# 中使用枚举作为泛型类型参数 [重复]

如何在 C# 中获取枚举索引值