2014-09-02 61 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

我會建議遠離這種方法,其中數據與枚舉值一起存儲。相反,保持枚舉簡單並將其用於其設計目的:枚舉命名值。然後在別處存儲數據,使用類似解釋器或中介模式的方式訪問和修改數據。一種方法是使用集合或字典,其中鍵是枚舉值,值是您的數字。