枚举类型,新手型的,高人勿近!
搞了个枚举,枚举类型定义了一组符号和数值对,每个枚举类型都直接继承于system.enum.而system.enum又继承于system.valuetype,因此枚举类型是值类型,枚举类型week 定义了一个星期7天.
1using System;
2using System.Data;
3using System.Configuration;
4using System.Web;
5using System.Web.Security;
6using System.Web.UI;
7using System.Web.UI.WebControls;
8using System.Web.UI.WebControls.WebParts;
9using System.Web.UI.HtmlControls;
10
11public partial class _Default : System.Web.UI.Page
12{
13 protected void Page_Load(object sender, EventArgs e)
14 {
15 if (!IsPostBack)
16 {
17 TestEnum();
18 Week weekDay = (Week)100;
19 ValiateEnum(weekDay);
20 Response.End();
21 }
22
23 }
24
25//定义星期的枚举
26 public enum Week
27 {
28 Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday
29 }
30 private void TestEnum()
31 {
32 Week[] weekList = (Week[])Enum.GetValues(typeof(Week));
33 foreach (Week w in weekList)
34 {
35 Response.Write(w.ToString("D") + "\t" + w.ToString("G") + "<br>");
36 }
37 string[] nameList = Enum.GetNames(typeof(Week));
38 foreach (string s in nameList)
39 { Response.Write(s + "<br>"); }
40 Response.Write(Enum.GetName(typeof(Week),3)+"<br>");
41 Response.Write(Enum.GetName(typeof(Week),Week.Wednesday)+ "<br>");
42 //Response.Write("Base class is "+Enum.GetUnderlyingType(typeof(Week)+"<br>"));
43 //不知道错哪了,不注释掉不让调试.
44 }
45 private void ValiateEnum(Week w)
46 {
47 if (Enum.IsDefined(typeof(Week), w) == false)
48 {
49 Response.Write(w.ToString() + "Is not exist.<br>");
50 }
51 else
52 {
53 Response.Write(w.ToString() + "\t Is exist.<br>");
54 }
55 }
56}
57
58
2using System.Data;
3using System.Configuration;
4using System.Web;
5using System.Web.Security;
6using System.Web.UI;
7using System.Web.UI.WebControls;
8using System.Web.UI.WebControls.WebParts;
9using System.Web.UI.HtmlControls;
10
11public partial class _Default : System.Web.UI.Page
12{
13 protected void Page_Load(object sender, EventArgs e)
14 {
15 if (!IsPostBack)
16 {
17 TestEnum();
18 Week weekDay = (Week)100;
19 ValiateEnum(weekDay);
20 Response.End();
21 }
22
23 }
24
25//定义星期的枚举
26 public enum Week
27 {
28 Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday
29 }
30 private void TestEnum()
31 {
32 Week[] weekList = (Week[])Enum.GetValues(typeof(Week));
33 foreach (Week w in weekList)
34 {
35 Response.Write(w.ToString("D") + "\t" + w.ToString("G") + "<br>");
36 }
37 string[] nameList = Enum.GetNames(typeof(Week));
38 foreach (string s in nameList)
39 { Response.Write(s + "<br>"); }
40 Response.Write(Enum.GetName(typeof(Week),3)+"<br>");
41 Response.Write(Enum.GetName(typeof(Week),Week.Wednesday)+ "<br>");
42 //Response.Write("Base class is "+Enum.GetUnderlyingType(typeof(Week)+"<br>"));
43 //不知道错哪了,不注释掉不让调试.
44 }
45 private void ValiateEnum(Week w)
46 {
47 if (Enum.IsDefined(typeof(Week), w) == false)
48 {
49 Response.Write(w.ToString() + "Is not exist.<br>");
50 }
51 else
52 {
53 Response.Write(w.ToString() + "\t Is exist.<br>");
54 }
55 }
56}
57
58
问题就出现了,其中有个GetValue和 GetValues,虽然就多了一个S ,但区别很大的.
还有一个GetName和 GetNames,也不一样,GetName是指定枚举中检索具有指定值的常数的名称;
GetNames是指检索指定枚举中常数名称的数组;
还有上面 Response.Write(w.ToString("D") + "\t" + w.ToString("G") + "<br>");里面的D和G是什么意思?
第八宗罪Tobin