相关文章推荐
可爱的勺子  ·  Failed to execute ...·  1 年前    · 
茫然的茶叶  ·  session storage - ...·  1 年前    · 
玉树临风的山羊  ·  WPF ...·  1 年前    · 

框架devise指南:

在非标志枚举上提供一个零值如果None不适合枚举,那么将零值赋给应该用作枚举默认值的元素。

避免使用负值或零的标志枚举值普通成员。 一个枚举值为零会带来问题和操作等

那么,我想我不同意大多数答案,说不明确的数字。 我总是明确地给它们编号,但是这是因为在大多数情况下,我最终将它们保存在一个数据stream中,并以整数值forms存储。 如果不明确地添加值,然后添加一个新值,则可以中断序列化,然后无法正确加载旧的持久对象。 如果你打算做任何types的这些值的持久存储,那么我会强烈build议明确设置值。

Enum是一个值types,如果没有明确初始化它的默认值(例如一个类中的Enum字段)将是0。

所以你通常想把0作为一个定义的常量(例如Unknown)。

在你的例子中,如果你想让Inactive成为默认值,那么它的值应该是零。 否则,您可能需要考虑添加常量Unknown 。

有些人build议你不要为你的常量显式指定值。 在大多数情况下可能是好的build议,但有些情况下你会这样做:

其值与外部系统互相使用的枚举(例如COM)。

除非你有一个特定的理由去改变它,否则把枚举的默认值从零开始。

public enum Status : byte { Inactive, Active }

我会说最好的做法是不编号,让它隐含 – 这将从0开始。因为其隐含的语言偏好,总是很好的遵循:)

我会开始一个布尔types的枚举0。

除非“Inative”是指除“Inactive”之外的东西:)

这保留了这些标准。

我会说,这取决于你如何使用它们。 对于标记枚举是一个很好的做法,0为None值,如下所示:

[Flags] enum MyEnum { None = 0, Option1 = 1, Option2 = 2, Option3 = 4, All = Option1 | Option2 | Option3, }

当你的枚举可能被映射到一个数据库查找表时,我会从1开始。对于专业编写的代码应该不重要,但这会提高可读性。

在其他情况下,我会保持原样,不pipe他们是以0还是1开始。

不要分配任何数字。 只要使用它就像它应该使用。

如果你从1开始,那么你可以很容易地得到你的东西。

{ BOX_THING1 = 1, BOX_THING2 = 2, BOX_NUM_THING = BOX_THING2 };

如果从0开始,则使用第一个值作为未初始化的值。

{ BOX_NO_THING = 0, BOX_THING1 = 1, BOX_THING2 = 2, BOX_NUM_THING = BOX_THING2 };

除非有足够的理由使用原始值,否则只能使用隐式值并使用Status.Active和Status.Inactive引用它们。

问题在于,您可能希望将数据存储在平面文件或数据库中,或使用其他人创build的平面文件或数据库。 如果你自己做,那么编号应该符合Enum的用法。

如果数据不是你的,当然你会想要使用任何原始的开发者用作编号scheme。

如果您打算将Enum用作一组标志,那么有一个简单的约定值得关注:

enum Example { None = 0, // 0 Alpha = 1 << 0, // 1 Beta = 1 << 1, // 2 Gamma = 1 << 2, // 4 Delta = 1 << 3, // 8 Epsilon = 1 << 4, // 16 All = ~0, // -1 AlphaBeta = Alpha | Beta, // 3 }

值应该是2的幂,并且可以使用位移操作来表示。 None ,显然应该是0 ,但All不太明显是-1 。 〜0是0的二进制否定,并产生一个数字,每一位都设为1 , 表示值-1 。 对于复合标志(通常用于方便),可以使用按位或运算符|将其他值合并 。

如果没有指定编号从0开始。

由于枚举经常被序列化并存储为int,而不是string,所以明确是很重要的。

对于存储在数据库中的任何枚举,我们总是明确地编号选项,以防止在维护期间移位和重新分配。

据微软称,推荐的约定是使用第一个零选项来表示未初始化的或最常见的默认值。

下面是从1开始编号而不是0的快捷方式。

public enum Status : byte { Inactive = 1, Active }

如果您希望设置标志值以便在枚举值上使用位运算符,请不要在零值处开始编号。

首先,除非你为某个原因指定了具体的值(数值在别的地方有意义,例如数据库或者外部服务),那么就根本不指定数值,而要明确。

其次,你应该总是有一个零值项(非标志枚举)。 该元素将被用作默认值。

除非有理由,例如将它们用作数组或列表的索引,或者还有其他一些实际的原因(比如在按位操作中使用它们),否则不要从0开始。

你的enum应该从需要的地方开始。 它也不一定是连续的。 这些值如果明确设定,则需要反映一些语义或实际考虑。 例如,“墙上的瓶子”的enum应该从1到99编号,而4的幂enum应该从4开始,并继续16,64,256等等。

而且,只有在代表一个有效状态的情况下,才可以为enum添加一个零值元素。 有时“无”,“未知”,“缺失”等是有效的值,但很多时候不是。

我喜欢开始我的枚举0,因为这是默认的,但我也想包括一个未知值,值为-1。 这然后成为默认值,有时可以帮助debugging。

在数学和计算机科学理论中,一个集的 枚举 是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠.。 枚举 是一个被命名的整型常数的集合, 枚举 在日常生活中很常见,例如表示星期的SUNDAY、MO RED,BLUDE,GREEN,YELLOW: 枚举 常量,本质上是数据。默认从0开始,向下自动+1。1. 增加代码的可读性和可维护性 , 枚举 是一个整体定义在一个类型中,更便于代码阅读。 2. 和#define定义的标识符比较 枚举 有类型检查,更加严谨。 3. 防止了命名污染(封装) 。 4. 便于调试。 5. 使用方便,一次可以定义多个常量。... 枚举 :顾名思义就是把可能取 进行一一列举。 enum Color{BLUE,//注意这里用,进行分隔,而不是;此时, enum Color就是 枚举 类型,其中{}之内的为 枚举 常量。注意: 枚举 常量都是有 的,默认从0开始,一次递增1,也可以在自定义的时候赋上初 enum Color{BLUE,//注意这里用,进行分隔,而不是;} enum Color { RED, GREEN, BLUE } 如果 枚举 不添加任何方法, 枚举 默认为从0开始的有序数 。以 Color 枚举 类型举例,它的 枚举 常量依次为RED:0,GREEN:1,BLUE:2。 枚举 的好处:可以将常量组织起来,统一进行管理。 枚举 的典型应用场景:错误码、状态机等。 枚举 类型的本质 文章目录第一章 枚举 类型的定义第一章 枚举 类型的作用1.1 先来写个小需求1.1.1 局部变量写法1.1.2 静态常量写法1.1.3 枚举 写法1.2 我们再来写个小需求1.2.1 静态常量写法1.2.2 枚举 写法第二章 自定义 枚举 类型 枚举 类的定义第二章 枚举 实现原理第一章 什么时候用 枚举 ?1 枚举 概述2 枚举 的定义3 枚举 的使用参考资料 第一章 枚举 类型的定义 public enum 枚举 名{ 枚举 项常量1, 枚举 项常量2, 枚举 项常量3; 字段...; 私有构造器...; 方法...; 在未进行初始化时, 枚举 的第一个变量,默认 为0,其后依次数 +1,对应的输出则为:red(0),blue(1),yellow(2),brown(3),green(4)。 枚举 具有这样的规律 注意: 枚举 元素的 ,是不可修改的,在开始的时候说过,它可以看作为const类型。 其实,学过C的人, 应该 看出 枚举 的格式与结构体相似,其实 枚举 的用法和结构体大. 1. 默认方法 基于jdk1.8 [外链图片转存失败(img-RxnJXIUF-1567604995880)(C:\Users\周军\AppData\Roaming\Typora\typora-user-images\1567601963918.png)] 如上图,所有的默认方法 public enum ColorEnu... 各位大虾,想问一个有关的 java enum 问题在.net 中 enum 元素可以赋 如: enum Direction { None = 0xff, Up = 2, Down = 4, Left = 8, Right = 16 };但 java 里是默认元素为0 1 2 3,在 java 怎么样才能达到以上效果。如有一段.net 代码:...... enum Direction { None = 0xff, ... 枚举 :是一个被命名的整型常数的集合, 枚举 在日常生活中很常见。 枚举 常量:利用 枚举 常量,可用文字来代替数字,这样做可以使程序变得更加易懂。例如: (1)定义了一个 枚举 类型名 enum WeekDay,然后定义变量为该 枚举 类型。 enum WeekDay{SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY}; enum We