Tag: 枚举

在C ++中扩展枚举?

有没有在C + +的方式来扩展/“inheritance”枚举? IE: enum Enum {A,B,C}; enum EnumEx : public Enum {D,E,F}; 或至less定义它们之间的转换?

枚举和常量。 哪个使用时?

我正在读取枚举,并发现它们非常类似于声明常量。 我怎么知道什么时候使用常量而不是枚举,反之亦然。 使用枚举有什么好处?

如何获得在C#中的所有枚举值的数组?

我有一个枚举,我想显示所有可能的值。 有没有办法获得一个数组或枚举的所有可能的值列表,而不是手动创build这样的列表? 例如,如果我有一个枚举: public enum Enumnum { TypeA, TypeB, TypeC, TypeD } 我将如何获得包含{ TypeA, TypeB, TypeC, TypeD }的List<Enumnum> ?

如何获得在代码中的attrs.xml中创build的枚举

我用enumtypes的declare-styleable属性创build了一个自定义View(在这里find它)。 在XML中,我现在可以select我的自定义属性的枚举条目之一。 现在我想创build一个方法来设置此值编程,但我不能访问枚举。 attr.xml <declare-styleable name="IconView"> <attr name="icon" format="enum"> <enum name="enum_name_one" value="0"/> …. <enum name="enum_name_n" value="666"/> </attr> </declare-styleable> layout.xml <com.xxx.views.IconView android:id="@+id/heart_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" app:icon="enum_name_x"/> 我需要的是这样的: mCustomView.setIcon(R.id.enum_name_x); 但我找不到枚举,或者我甚至不知道如何获得枚举的枚举或名称。 谢谢

如何在不指定types的情况下引用我的Java Enum

我有一个类定义自己的枚举像这样: public class Test { enum MyEnum{E1, E2}; public static void aTestMethod() { Test2(E1); // << Gives "E1 cannot be resolved" in eclipse. } public Test2(MyEnum e) {} } 如果我指定MyEnum.E1它工作正常,但我真的只想把它作为“E1”。 任何想法我可以做到这一点,还是必须在另一个文件中定义这个工作? 结论:我一直无法得到正确的导入语法。 由于几个答案build议这是可能的,我会select给我我需要的语法,并upvote其他人。 顺便说一句,这是一个真正的奇怪的一部分(之前,我得到了静态导入工作),我写了一个开关语句使用枚举不允许枚举types的前缀 – 所有其余的代码需要它。 伤了我的脑袋。

是否有可能在枚举中保存一个types(使用“typeof()”)?

所以我用XNA创build了一个游戏,C#4.0,我需要pipe理很多PowerUps(代码中的所有代码都是从“PowerUp”类inheritance的),并且处理PowerUps的后端pipe理。枚举PowerupEffectType,每个PowerUp子类都有一个值。 最终在代码中,我需要从PowerupEffectType转换为Poweruptypes(类Type ,通常使用typeof([class name]) )。 由于这是一个组合项目,所以我希望尽可能地将PowerupEffectType的每个值都结合到相应的类types中,即:不仅期望其他程序员使用switch语句手动进行转换,并确保稍后添加/扩展涉及尽可能less的地方尽可能less的变化。 我有几个选项,迄今为止发现的最好的方法是创buildenum伪方法,将所有东西压缩到一个switch语句(我想要的99%),这要归功于我在这里find的一些提示: http ://msdn.microsoft.com/en-us/library/bb383974.aspx 但我试图进一步 – 我可以保存Type enum ? 我知道你可以将枚举保存为一个特定types(链接: http : //msdn.microsoft.com/en-us/library/cc138362.aspx ),但Type不是其中之一。 当前的select是字节,sbyte,short,ushort,int,uint,long和ulong 。 是否有任何可行的方法来保存一个Type转换为上述任何数据types和返回? 要明确,这是我想我可以做的,我正在寻找一种方法: // (Assuming 'LightningPowerup', 'FirePowerup', and 'WaterPowerup' are // all declared classes that inherit from a single base class) public enum PowerupEffectType { LIGHTNING = typeof(LightningPowerup), FIRE = typeof(FirePowerup), WATER = typeof(WaterPowerup) } […]

在C#中检查Type实例是否为空值枚举

我如何检查types是否是C#中可为null的枚举类似 Type t = GetMyType(); bool isEnum = t.IsEnum; //Type member bool isNullableEnum = t.IsNullableEnum(); How to implement this extension method?

如何使一个枚举符合Swift协议?

Swift文档说, 类 , 结构和枚举都可以符合协议,我可以达到一致的地步。 但是我不能让这个枚举类似于类和结构的例子: protocol ExampleProtocol { var simpleDescription: String { get set } mutating func adjust() } class SimpleClass: ExampleProtocol { var simpleDescription: String = "A very simple class." var anotherProperty: Int = 69105 func adjust() { simpleDescription += " Now 100% adjusted." } } var a = SimpleClass() a.adjust() let aDescription = […]

如何从Java中的索引获得枚举值?

我在Java中有一个枚举: public enum Months { JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC } 我想通过索引访问枚举值,例如 Months(1) = JAN; Months(2) = FEB; … 我该怎么做?

在C#中枚举的同时从List <T>中移除项目的智能方法

我有一个经典的案例,试图从一个集合中删除一个项目,同时在一个循环中枚举它: List<int> myIntCollection = new List<int>(); myIntCollection.Add(42); myIntCollection.Add(12); myIntCollection.Add(96); myIntCollection.Add(25); foreach (int i in myIntCollection) { if (i == 42) myIntCollection.Remove(96); // The error is here. if (i == 25) myIntCollection.Remove(42); // The error is here. } 在更改发生后的迭代开始时,会抛出InvalidOperationException ,因为枚举器不会在底层集合更改时不喜欢。 我需要在迭代过程中对集合进行更改。 有许多模式可以用来避免这种情况 ,但似乎没有一个好的解决scheme: 不要在这个循环中删除,而应该在主循环之后保留一个单独的“删除列表”。 这通常是一个很好的解决scheme,但在我的情况下,我需要项目立即消失,因为“等待”,直到主循环之后真正删除项目会改变我的代码的逻辑stream程。 而不是删除项目,只需在项目上设置一个标志,并将其标记为不活动。 然后添加模式1的function来清理列表。 这可以满足我所有的需求,但是这意味着很多代码将不得不改变,以便每次访问一个项目时检查非激活标志。 这是太多的pipe理,我喜欢。 以某种方式将模式2的思想融入从List<T>派生的类中。 这个超级列表将处理非活动标志,在事实之后删除对象,并且也不会将枚举消费者标记为不活动的项目。 基本上,它只是封装了模式2的所有想法(以及随后的模式1)。 这样的课是否存在? 有没有人有这个代码? 或者,还有更好的方法? 我被告知访问myIntCollection.ToArray()而不是myIntCollection将解决问题,并允许我在循环内部删除。 […]