我正在阅读文件内容,并采取像这样的确切位置的string string fileContentMessage = File.ReadAllText(filename).Substring(411, 3); 输出将始终为“ Ok或“ Err 另一方面,我有这样的ContentEnum MyObject public class MyObject { public enum ContentEnum { Ok = 1, Err = 2 }; public ContentEnum Content { get; set; } } 现在,在客户端我想使用这样的代码(将我的stringfileContentMessage为Content属性) string fileContentMessage = File.ReadAllText(filename).Substring(411, 3); MyObject myObj = new MyObject () { Content = /// ///, };
你使用单数还是复数进行枚举? 我认为在宣言中用复数forms最好 enum Weekdays { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday } …但是我认为在使用这个types时单数更有意义,例如 Weekday firstDayOfWeek = Weekday.Monday; 我读了一个build议,使用单数的定期枚举和复数forms的标志,但我想听听更多的优点和缺点。
我试图find一种方法来遍历枚举的值,而使用generics。 不知道如何做到这一点,如果可能的话。 下面的代码演示了我想要做什么。 请注意代码T.values()在下面的代码中无效。 public class Filter<T> { private List<T> availableOptions = new ArrayList<T>(); private T selectedOption; public Filter(T selectedOption) { this.selectedOption = selectedOption; for (T option : T.values()) { // INVALID CODE availableOptions.add(option); } } } 下面是我将如何实例化一个Filter对象: Filter<TimePeriod> filter = new Filter<TimePeriod>(TimePeriod.ALL); 枚举定义如下: public enum TimePeriod { ALL("All"), FUTURE("Future"), NEXT7DAYS("Next 7 Days"), NEXT14DAYS("Next 14 […]
我想知道如果一个类是一个枚举,但我想我错过了一些东西: if (test.MyEnum.class instanceof Enum<?>.class) obj = resultWrapper.getEnum(i, test.MyEnum.class); else obj = resultWrapper.getObject(i); 它给了我一个错误,说Enum.class是无效的。 那么如何检查一个类是一个枚举? 我很确定有可能确定,我只是无法得到它。 谢谢
我有一个接口 – 这是一个很好的作为例子: public interface Particle { enum Charge { POSITIVE, NEGATIVE } Charge getCharge(); double getMass(); etc… } 如果我将Charge枚举定义为静态,这种方式的执行方式会有什么区别吗? public interface Particle { static enum Charge { POSITIVE, NEGATIVE } Charge getCharge(); double getMass(); etc… }
我有一个类包含一个枚举类。 class Shader { public: enum class Type { Vertex = GL_VERTEX_SHADER, Geometry = GL_GEOMETRY_SHADER, Fragment = GL_FRAGMENT_SHADER }; //… 然后,当我在另一个类中实现下面的代码… std::unordered_map<Shader::Type, Shader> shaders; …我收到一个编译错误。 …usr/lib/c++/v1/type_traits:770:38: Implicit instantiation of undefined template 'std::__1::hash<Shader::Type>' 这里是什么原因造成的?
鉴于以下枚举: public enum Operations_PerHourType : byte { Holes = 1, Pieces = 2, Sheets = 3, Strips = 4, Studs = 5 } 当我运行微软的代码分析工具时,它告诉我: CA1028:Microsoft.Design:如果可能,使底层types的“Enums.Operations_PerHourType”System.Int32而不是“字节”。 它永远不会超过几个可能的值,所以我把它声明为一个字节。 他们为什么会推荐使用int32? 未来可扩展性的更多价值? 还是有性能改进?
整个问题在标题中。 例如: enum enumTest { TYPE1(4.5, "string1"), TYPE2(2.79, "string2"); double num; String st; enumTest(double num, String st) { this.num = num; this.st = st; } } 构造函数没有使用默认或private修饰符,但给了我一个编译器错误,如果给定的public或protected修饰符。
我有这个枚举: enum ButtonState { BUTTON_NORMAL = 0, BUTTON_PRESSED = 1, BUTTON_CLICKED = 2 }; const u8 NUM_BUTTON_STATES = 3; 在我的Button类中,我有成员variablesButtonState state; 和ButtonColors colors[NUM_BUTTON_STATES]; 。 在绘制button时,我使用colors[state]来获取button所处状态的颜色。 我的问题: 这是不错的编程风格? 有没有更好的方法来做到这一点? (我通常只使用开关语句枚举…使用枚举作为数组索引感觉不对。) 我必须指定枚举的值吗? 它似乎从默认情况下从0开始,并增加1,但它是保证在所有编译器中以这种方式工作?
给定一个通用参数TEnum,它总是一个枚举types,有没有什么办法从TEnum强制转换为int,而不是装箱/拆箱? 看到这个示例代码。 这将不必要地打开/取消装箱值。 private int Foo<TEnum>(TEnum value) where TEnum : struct // C# does not allow enum constraint { return (int) (ValueType) value; } 上面的C#是释放模式编译为以下IL(注意装箱和拆箱操作码): .method public hidebysig instance int32 Foo<valuetype .ctor ([mscorlib]System.ValueType) TEnum>(!!TEnum 'value') cil managed { .maxstack 8 IL_0000: ldarg.1 IL_0001: box !!TEnum IL_0006: unbox.any [mscorlib]System.Int32 IL_000b: ret } SO的转换已经被广泛的处理,但是我找不到针对这个具体情况的讨论。