Tag: 枚举

什么是按位或| 操作员呢?

我正在阅读有关标志枚举和按位运算符的信息,并且遇到了以下代码: enum file{ read = 1, write = 2, readandwrite = read | write } 我在某处读到了为什么有一个包容性或陈述以及如何不能有&,但找不到文章。 有人可以刷新我的记忆并解释推理吗? 另外,我怎么说和/或? 例如。 如果dropdown1 =“你好”和/或dropdown2 =“你好”…. 谢谢

将枚举转换为列表

假设我有以下枚举值 enum Language { CSharp= 0, Java = 1, VB = 2 } 我想将它们转换为值列表(即) { CSharp,Java,VB}. 如何将它们转换为值列表?

C#enum – 为什么*隐式*从0开始工作?

拿这段代码: enum En { val1, val2, } void Main() { En plop = 1; //error: Cannot implicitly convert type ‘int’ to ‘En’ En woop = 0; //no error } 当然,在为enum类型变量赋值1时会失败。 (打一个明确的演员,它会起作用。) 我的问题是:为什么分配0时不会失败?

为什么Enum的HasFlag方法需要拳击?

我正在阅读“C#via CLR”和第380页,有一条说明如下: 注意Enum类定义HasFlag方法,定义如下 public Boolean HasFlag(Enum flag); 使用此方法,您可以重写对Console.WriteLine的调用,如下所示: Console.WriteLine(“Is {0} hidden? {1}”, file, attributes.HasFlag(FileAttributes.Hidden)); 但是,我建议您出于这个原因避免使用HasFlag方法: 由于它采用了Enum类型的参数,因此传递给它的任何值都必须装箱,这需要内存分配 。“ 我无法理解这个粗犷的陈述 – 为什么“ 您传递给它的任何值都必须装箱 flag参数类型是Enum ,这是一个值类型,为什么会有拳击? “传递给它的任何值必须装箱”应该意味着当你将值类型传递给参数Enum flag时会发生装箱,对吧?

在C#中表示游戏卡类的最佳方式

我使用类卡,其中包含2个枚举属性(套件 – 心形钻石黑桃和俱乐部)和卡值从2到A.并覆盖ToString()方法返回类似Ah Ad等等。一切正常但枚举值无法启动有了数字,因此枚举的卡片值看起来像x2,x3,x4 ……它不漂亮。 还需要简单的方法来解析单个字符串中的几张卡片。 谁知道设计这门课程的最佳方法?

奇怪的“集合在枚举器实例化后被修改”exception

也许有人可以指出我正确的方向,因为我完全被这个困扰了。 我有一个函数,只需打印出一个LinkedList类: LinkedList components = new LinkedList(); … private void PrintComponentList() { Console.WriteLine(“—Component List: ” + components.Count + ” entries—“); foreach (Component c in components) { Console.WriteLine(c); } Console.WriteLine(“——“); } Component对象实际上有一个自定义的ToString()调用: int Id; … public override String ToString() { return GetType() + “: ” + Id; } 这个函数通常工作正常 – 但是我遇到的问题是,当它在列表中构建大约30个左右的条目时, PrintcomplentList foreach语句返回InvalidOperationException: Collection was modified […]

BitArray以错误的方式返回位?

这段代码: BitArray bits = new BitArray(new byte[] { 7 }); foreach (bool bit in bits) { Console.WriteLine(bit ? 1 : 0); } 给我以下输出: 11100000 不应该是相反的方式吗? 像这样: 00000111 我知道有一点点大端,尽管这些术语只涉及字节的位置。 据我所知,它们不会影响比特。

在枚举中指定基础类型的用例是什么?

有什么意义 enum SomeEnum : byte // <—- { SomeValue = 0x01, … } 当你必须进行转换只是为了将它分配给与枚举基础类型相同类型的变量? byte b = (byte)SomeEnum.SomeValue;

为什么枚举声明接受短而不是Int16

我想声明一个非默认底层类型的新枚举。 这有效: public enum MyEnum : short { A, B, C, } 但我不明白为什么这不编译: public enum MyEnum : System.Int16 { A, B, C, } 编译说 输入byte,sbyte,short,ushort,int,uint,long或ulong expected 我知道short是所有.NET版本(包括32/64位版本)的Int16的别名。 我不明白为什么编译器在该特定情况下给别名赋予不同的含义。 任何解释?

为Enums提供本地化的最佳方式是什么?

我正在编写一个使用很多枚举的多语言应用程序,我希望实现以下目标: 将枚举名称显示为本地化字符串 使用属性提供本地化描述 启用语言敏感的枚举解析回int值 我热衷于使用属性+资源文件来修饰枚举,以便可以从运行时类型信息中访问本地化字符串。 在使用静态成员而不是枚举声明静态类之前,我一直沿着这条路走下去,但这解决了很多问题。 某种类型的基于TypeDescriptor的机制是否合适? 甚至可能吗? 此外 – 如何以干净,通用,可重复使用的方式实现目标#3? 自从提出这个问题以来,我已经完成了需要可本地化的枚举显示的开源库。 我选择了实现TypeConverters的技术。 完整资料来源于http://measures.codeplex.com/