Tag: 枚举

枚举EF 5.0 – 数据库优先

如果我使用Database First,如何使我的上下文对象使用Entity Framework 5.0中的Enumfunction。

枚举加法与减法和铸造

为什么添加需要演员但减法在没有演员表的情况下有效? 请参阅下面的代码以了解我的要求 public enum Stuff { A = 1, B = 2, C = 3 } var resultSub = Stuff.A – Stuff.B; // Compiles var resultAdd = Stuff.A + Stuff.B; // Does not compile var resultAdd2 = (int)Stuff.A + Stuff.B; // Compiles 注意:对于加法和减法,在上述所有三个例子中,结果是否超出范围(枚举)并不重要。

我尝试使用或返回时可以避免使用枚举值吗?

如果我有以下枚举: public enum ReturnValue{ Success = 0, FailReason1 = 1, FailReason2 = 2 //Etc… } 我回来时可以避免施放,像这样: public static int main(string[] args){ return (int)ReturnValue.Success; } 如果没有,为什么默认情况下不将枚举值视为int?

使用C#中的枚举值反序列化Dictionary

我试图在C#中序列化/反序列化Dictionary 。 对象可以是可序列化的任何东西。 Json.NET几乎可以工作,但如果字典中的值是enum ,则反序列化不正确,因为它被反序列化为long 。 TypeNameHandling.All没有任何区别。 是否还有其他快速的序列化库解决方案。 结果不一定是JSON,但必须是文本。 我对传递给字典的数据也没有影响。 我只需要序列化和反序列化我遇到的任何事情。 编辑: StringEnumConverter没有帮助。 数据被转换回Dictionary ,因此反序列化器不知道序列化值是enum 。 它将它视为一个对象,使用StringEnumConverter在反序列化时它仍然是一个string ; 如果没有转换器,它会被反序列化。 JSON.NET不保留枚举。 我想提供的解决方案是现有接口的实现,它被注入到我无法改变的现有解决方案中。 EDIT2:这是我想要做的一个例子 public enum Foo { A, B, C } public enum Bar { A, B, C } public class Misc { public Foo Foo { get; set; } } var dict = new Dictionary(); […]

如何防止枚举中的重复值?

我想知道有没有办法防止带有重复键的enum编译? 例如,下面的enum将编译 public enum EDuplicates { Unique, Duplicate = 0, Keys = 1, Compilation = 1 } 虽然这段代码 Console.WriteLine(EDuplicates.Unique); Console.WriteLine(EDuplicates.Duplicate); Console.WriteLine(EDuplicates.Keys); Console.WriteLine(EDuplicates.Compilation); 会打印 Duplicate Duplicate Keys Keys

将字符串解析为枚举类型

我有一个这样的枚举类型作为例子: public Enum MyEnum { enum1, enum2, enum3 }; 我将从配置文件中读取一个字符串。 我需要它来解析字符串到MyEnum类型或null o未定义。 不确定以下代码是否有效(对不起现在无法访问我的VS): // example: ParseEnum(“ENUM1”, ref eVal); bool ParseEnum(string value1, ref eVal) where T : Enum { bool bRet = false; var x = from x in Enum.GetNames(typeof(T)) where string.Equals(value1, x, StringComparison. OrdinalIgnoreCase) select x; if (x.Count() == 1 ) { eVal = Enum.Parse(typeof(T), […]

为什么枚举需要显式转换为int类型?

这样做没有数据丢失,那么为什么必须明确地将枚举转换为整数? 如果它是隐含的,那么它是不是更直观,比如当你有更高级别的方法时: PerformOperation ( OperationType.Silent type ) 其中, PerformOperation调用一个被PerformOperation的包装C ++方法: _unmanaged_perform_operation ( int operation_type )

如何循环遍历C#中的所有枚举值?

这个问题在这里已有答案: 如何在C#中枚举枚举? 26个答案 public enum Foos { A, B, C } 有没有办法循环Foos的可能值? 基本上? foreach(Foo in Foos)

为什么switch for enum接受隐式转换为0但是对于任何其他整数都没有?

有一个: enum SomeEnum { A = 0, B = 1, C = 2 } 现在编译器允许我写: SomeEnum x = SomeEnum.A; switch(x) { case 0: // <— Considered SomeEnum.A break; case SomeEnum.B: break; case SomeEnum.C: break; default: break; } 0被认为是SomeItems.A 。 但我写不出来: SomeEnum x = SomeEnum.A; switch(x) { case 0: break; case 1: // <— Here is […]

collections被修改; 枚举操作可能无法执行 – 为什么?

我正在枚举实现IList的集合,在枚举期间我正在修改集合。 我收到错误,“收集已被修改;枚举操作可能无法执行。” 我想知道为什么在迭代期间修改集合中的项时会发生此错误。 我已经将我的foreach循环转换为for循环,但我想知道发生此错误的原因的’详细信息’。