天天看點

c語言枚舉做字元類型轉換,C# 枚舉類型轉換字元串 Enum to string

c# 枚舉類型轉換字元串 enum to string

枚舉類型都是值類型。

system.enum是一個抽象類(abstract class),所有枚舉類型都直接繼承自它,當然也同時繼承了它的所有成員。

所有的值類型都是system.valuetype的後代,枚舉類型也不例外,枚舉類型直接繼承自system.enum,而system.enum卻又直接繼承自system.valuetype的,是以,枚舉類型也是 system.valuetype的後代。

值類型都是system.valuetype的後代,但system.valuetype的後代不全是值類型,system.enum就是唯一的特例!

在system.valuetype的所有後代中,除了system.enum之外其它都是值類型。

事實上,我們可以在.net的源代碼中找到system.enum的聲明:

public abstract class enum : valuetype, icomparable, iformattable, iconvertible

1. 所有枚舉類型(enum type)都是值類型。

2. system.enum和system.valuetype本身是引用類型。

3. 枚舉類型(enum type)都是隐式的直接繼承自system.enum,并且這種繼承關系隻能由編譯器自動展開。但system.enum本身不是枚舉類型(enum type)。

4. system.enum是一個特例,它直接繼承自system.valuetype,但本身卻是一個引用類型。

5. 枚舉類型可以被裝箱成system.enum、system.valuetype、system.object或者system.iconvertible、system.iformattable、system.icomparable。

注意:在.net 1.1上,枚舉類型隻能被裝箱到system.enum、system.valuetype、system.object;而在.net 2.0上,枚舉類型還能被裝箱到system.enum所實作的三個接口:system.iconvertible、 system.icomparable、system.iformattable。對應的裝箱操作既可以為隐式的也可以是顯式的

enumtype

{

a=1,

b=2,

c=3

}

enumtype newtype=(enumtype)enum.parse(typeof(enumtype),"a");

string[] names=emum.getnames(typeof(enumtype));

array values=enum.getvalues(typeof(enumtype));

for(int i=0;i

{

dropdownlist.items.add(new listitem(names[i],values.getvalue(i)));

}

.net public enum timeofday

{

morning = 0,

afternoon = 1,

evening

}

再看

public void enumtest()

{

timeofday time = timeofday.afternoon;

//将枚舉字元串列印,即枚舉類型轉換(解析)成字元串類型

console.writeline(time.tostring());//輸出:afternoon

//擷取枚舉字元串的值,即将一個表示枚舉成員的字元串,解析為對應枚舉類型

timeofday time2 = (timeofday)enum.parse(typeof(timeofday), "evening", true);

//枚舉類型可以強制轉換成整型,整型也可以強制轉換成枚舉型

console.writeline((int)time2);//輸出:2

// 周遊所有的枚舉元素            ;

foreach (string s in enum.getnames(typeof(timeofday)))

{

console.writeline(s);

}

//輸出: morning

//       afternoon

//       evening

}