enum中使用中文 unity 列舉顯示中文問題

2021-10-12 14:08:57 字數 1513 閱讀 3957

示例:

有人為了顯示中文,這樣定義列舉嗎?

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 多執行緒使用模板...