示例:
有人為了顯示中文,這樣定義列舉嗎?
publicenumtimeofday
上午,下午,
晚上這樣定義,很彆扭,特別是在使用的時候,
比如,this.time = timeofday.上午;
而且你會逐漸發現它的侷限性。
列舉定義很頭疼:
在系統開發中,我們經常使用列舉,但是定義列舉是個頭疼的問題。
按照習慣我們習慣將列舉項定義為英語,但是,在使用的時候,特別針對國內客戶的時候,如果顯示的英文,則不符合要求,不易於使用者使用。
儘管現在列舉定義也能定義中文列舉項,但在優雅的英文**中穿插著中語,確實很不爽。如果涉及多語,很難擴充套件。
也有人經常用到常量來代替列舉,但這種方法在系統開發中不太可取,具體見:列舉與常量。
這時候我們肯定在埋怨:如果是計算機是咱們中國人發明的,也許我們就沒這個問題。
解決方案:
但是這是沒法改變的事實。我們只能加點轉換功能變成我們想要的東西了。下面提供解決方案:
為了方便使用者使用, 希望能夠找到一種比較好的方法,將列舉轉為我們想要的集合。通過反射,得到針對某一枚舉型別的描述。
列舉的定義中加入描述,如果要支援多語,則直接修改列舉描述即可。也不用修改其他**。
usingsystem;usingsystem.componentmodel;publicenumtimeofday
[description("上午")]
moning,
[description("下午")]
afternoon,
[description("晚上")]
evening,
方法1:
獲取列舉項+描述
//返回 dic/dicpublicstaticdictionarygetenumdic(type enumtype)
dictionarydic=newdictionary();
fieldinfo fieldinfos=enumtype.getfields();foreach(fieldinfo fieldinfieldinfos)
returndic;
方法2: 獲得值和表述的鍵值對
獲得---值+描述
//從列舉型別和它的特性讀出並返回乙個鍵值對//type,該引數的格式為typeof(需要讀的列舉型別)///鍵值對publicstaticnamevaluecollection getnvcfromenumvalue(type enumtype)
namevaluecollection nvc=newnamevaluecollection();
type typedescription=typeof(descriptionattribute);
system.reflection.fieldinfo fields=enumtype.getfields();stringstrtext=string.empty;stringstrvalue=string.empty;foreach(fieldinfo fieldinfields)
elsereturnnvc;
hibernate中使用enum型別
1.在pojo 實體類中定義了乙個customer 類和乙個枚舉子類partner.class customer class enum partner 在寫入資料庫的時候,可以選擇寫入int 型別或者string 型別.這個取決於配置.下面的配置是寫入字串到資料庫中 import j ax.pers...
Latex中使用中文
使用任何一種語言,latex都必須處理兩個基本問題 將輸入位元組對映為所使用語言的字元 將字元對映為所使用字型的字形 使用xelatex可以幫助我們處理這些問題。對於xelatex,輸入檔案預設為utf 8格式,引擎自動將字元對映為truetype或opentype字型的字形。當然,我們必須保證所使...
Unity中使用多執行緒
using system.collections using system.collections.generic using system.threading using unityengine c 多執行緒 可以執行非mono 可以使用基本型別和struct 不能執行 mono 多執行緒使用模板...