Questions tagged «enums»

由一组命名值组成的数据类型,这些命名值称为该类型的元素,成员或枚举数。

12
允许枚举类使用基于范围的For吗?
我有一个循环的代码块,在其中循环遍历的所有成员enum class。 for与新的相比,我目前使用的循环看起来非常笨拙range-based for。 有什么办法可以利用C ++ 11的新功能来减少当前for循环的冗长程度? 我想改进的当前代码: enum class COLOR { Blue, Red, Green, Purple, First=Blue, Last=Purple }; inline COLOR operator++( COLOR& x ) { return x = (COLOR)(((int)(x) + 1)); } int main(int argc, char** argv) { // any way to improve the next line with range-based for? …
73 c++  for-loop  c++11  enums 

5
为什么C#编译器允许空枚举?
我今天不小心定义了一个不包含任何值的枚举。像这样一个例子: public enum MyConfusingEnum{} 编译器很高兴让我定义它并成功构建了代码。 现在我显然不能使用传统意义上的代码,因为代码.. var mySadCompiler = MyConfusingEnum; 没有指定值,但有趣的是我很能说,.. var myRoundTheHousesZeroState = Activator.CreateInstance<MyConfusingEnum>(); 正如我提到的那样,它是MyConfusingEnum值为0的值类型; 我的问题是,为什么编译器允许空定义,并且在任何情况下它都可能有用?

11
验证枚举值
我需要验证一个整数才能知道是否为有效的枚举值。 用C#做到这一点的最佳方法是什么?
73 c#  validation  enums 


3
如何为Java 6枚举实现values()?
在Java中,您可以创建一个枚举,如下所示: public enum Letter { A, B, C, D, E, F, G; static { for(Letter letter : values()) { // do something with letter } } } 这个问题涉及“ values()”方法。具体来说,如何实施?通常,我可以在Eclipse中使用F3或CTRL + Click跳到Java类的源代码(甚至对于String,Character,Integer甚至Enum之类的类)。可以查看其他枚举方法的源(例如valueOf(String))。 每次调用“ values()”都会创建一个新数组吗?如果将其分配给局部变量,然后修改其中一个元素,则会发生什么情况(显然,这不会影响values()返回的值,这意味着每次都会分配一个新数组)。 它的代码是本地的吗?还是JVM /编译器对它进行了特殊处理,仅当无法证明不会对其进行修改时才从values()返回一个新实例。
72 java  enums 

6
在Objective-C中向前声明枚举
我在Objective-C程序中的枚举可见性遇到麻烦。我有两个头文件,一个头文件定义了一个typedef enum。另一个文件需要使用typedef'd类型。 在直接C语言中,我将只是#include另一个头文件,但是在Objective-C中,建议不要#import在头文件之间使用,而是@class根据需要使用前向声明。但是,我不知道如何前向声明枚举类型。 我不需要实际的枚举值,除了在相应的.m实现文件中,可以放心使用#import。那么,如何typedef enum在标头中识别它?

10
扩展C ++中的枚举?
C ++中有没有一种方法可以扩展/“继承”枚举? IE浏览器: enum Enum {A,B,C}; enum EnumEx : public Enum {D,E,F}; 或至少定义它们之间的转换?
71 c++  enums 

3
迅速。UILabel文本对齐
我迅速创建了UILabel: let label = UILabel(frame: CGRect( x: 50, y: 50, width: 100, height: 50)) 设置属性似乎很简单: label.textColor = UIColor.redColor() 如何实现像textAlignment这样的枚举类型?在目标C中 label.textAlignment = NSTextAlignmentCenter; 但很快似乎没有用。
71 enums  uilabel  swift 

6
Java枚举和其他类文件
我注意到enums在编译使整体大小膨胀之后,引入了许多其他类文件(Class $ 1)。它似乎附加在每个甚至使用枚举的类上,并且它们经常重复。 为什么会发生这种情况,并且有办法在不删除枚举的情况下防止这种情况发生。 (问题的原因是空间对我来说是非常宝贵的) 编辑 在进一步调查问题时,每次使用Enum上的开关时,Sun的Javac 1.6都会创建一个附加的综合类。它使用某种SwitchMap。该站点提供了更多信息,在这里告诉您如何分析Javac在做什么。 每次在枚举上使用开关时,额外的物理文件似乎要付出很高的代价! 有趣的是,Eclipe的编译器不会生成这些其他文件。我不知道唯一的解决方案是切换编译器吗?
71 java  enums 

8
匿名枚举的用法
匿名enum声明的目的是什么,例如: enum { color = 1 }; 为什么不只是声明int color = 1?
71 c++  enums 

12
如何将枚举的值获取到SelectList中
想象一下,我有一个这样的枚举(仅作为示例): public enum Direction{ Horizontal = 0, Vertical = 1, Diagonal = 2 } 考虑到枚举的内容将来可能会更改,我该如何编写例程以将这些值获取到System.Web.Mvc.SelectList中?我想将每个枚举名称作为选项文本,并将其值作为值文本,如下所示: <select> <option value="0">Horizontal</option> <option value="1">Vertical</option> <option value="2">Diagonal</option> </select> 到目前为止,这是我能想到的最好的方法: public static SelectList GetDirectionSelectList() { Array values = Enum.GetValues(typeof(Direction)); List<ListItem> items = new List<ListItem>(values.Length); foreach (var i in values) { items.Add(new ListItem { Text = Enum.GetName(typeof(Direction), …
71 c#  asp.net-mvc  enums 

2
在JSON模式中定义枚举数组的正确方法
我想用JSON模式数组来描述,它应该包含零个或多个预定义值。为简单起见,让我们这些可能的值:one,two和three。 正确的数组(应通过验证): [] ["one", "one"] ["one", "three"] 不正确: ["four"] 现在,我知道"enum"应该使用该属性,但是找不到在哪里放置相关信息。 选项A(在下方"items"): { "type": "array", "items": { "type": "string", "enum": ["one", "two", "three"] } } 选项B: { "type": "array", "items": { "type": "string" }, "enum": ["one", "two", "three"] }

3
Convert.ChangeType并转换为枚举?
我Int16从数据库中获得了一个值,需要将其转换为枚举类型。不幸的是,这是在代码层中完成的,该层对对象的了解很少,除了对象可以通过反射收集的内容。 这样,它最终Convert.ChangeType将以无效的强制转换异常调用失败。 我发现了我认为很臭的解决方法,如下所示: String name = Enum.GetName(destinationType, value); Object enumValue = Enum.Parse(destinationType, name, false); 有没有更好的方法,这样我就不必遍历此String操作了? 这是一个简短但完整的程序,如果有人需要实验,可以使用该程序: using System; public class MyClass { public enum DummyEnum { Value0, Value1 } public static void Main() { Int16 value = 1; Type destinationType = typeof(DummyEnum); String name = Enum.GetName(destinationType, value); Object enumValue = …
70 c#  enums  changetype 

10
模拟Java枚举以添加值以测试失败情况
我有一个或多或少像这样的枚举开关: public static enum MyEnum {A, B} public int foo(MyEnum value) { switch(value) { case(A): return calculateSomething(); case(B): return calculateSomethingElse(); } throw new IllegalArgumentException("Do not know how to handle " + value); } 并且我希望测试涵盖所有行,但是由于期望代码能够处理所有可能性,因此如果没有在开关中使用其相应的case语句,则无法提供值。 扩展枚举以添加额外的值是不可能的,并且仅模拟equals方法返回false也不会起作用,因为生成的字节码使用了幕后的跳转表来进行适当处理...所以我想使用PowerMock之类的东西也许可以实现一些黑魔法。 谢谢! 编辑: 当我拥有枚举时,我以为我可以在值上添加一个方法,从而完全避免切换问题。但是我仍然要提这个问题,因为它仍然很有趣。

3
Swift枚举继承
您可以在Swift中继承枚举吗?关于枚举继承,应注意哪些规则? 以下测试代码: enum TemperatureUnit: Int { case Kelvin, Celcius, Farenheit } enum TemperatureSubunit : Temperature { } 产生 error: type 'TemperatureSubunit' does not conform to protocol 'RawRepresentable'

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.