2014-09-02 62 views
0

如何使enum变量在特定的Arithmetic progression中增加?如何使某个常量的默认增量值在枚举中

例如:

enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri}; 

现在值将增加1。如何增加值让我们说再见2?例如:

enum Days {Sat=2, Sun=4, Mon=6, Tue=8, Wed=10, Thu=12, Fri=14}; 

我是否必须为每个元素手动执行此操作?

+2

是的,你必须手动完成它,但你总是可以很聪明,编写一个简单的控制台应用程序来接收一个字符串,将其拆分为逗号,然后将其与输入值一起重新加入,然后将其粘贴回代码中。 – Sayse 2014-09-02 13:30:06

+1

你是否这么频繁地做这件事情,它变成了一个问题,或者你只是好奇? – 2014-09-02 13:31:21

+0

@C鲍尔只是好奇。你想说说什么样的问题?全局常量? – 2014-09-02 13:36:12

回答

1

是的,在实践中你将不得不手动做 - 但你真的需要这样做吗?

没有用FlagsAttribute修饰的枚举应该不需要为每个成员分配具体值,因为枚举的主要目的是区分特定的一组项目,而不一定将这些项目映射到特定值。根据你需要的数字,使用enum外部的映射解决方案很可能是更好的软件工程。

理论上,您也可以使用T4 template以编程方式执行此操作;你会写一些代码从你自己的角度自动生成所需的源代码,但这对于这样一个简单的场景来说是过分的。

1

我会建议远离这种方法,其中数据与枚举值一起存储。相反,保持枚举简单并将其用于其设计目的:枚举命名值。然后在别处存储数据,使用类似解释器或中介模式的方式访问和修改数据。一种方法是使用集合或字典,其中键是枚举值,值是您的数字。