成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C# 枚舉和常量應用區別淺析

開發 后端
C# 枚舉和常量應用區別是什么呢?C# 枚舉和常量應用起來有什么實際區別呢?那么本文就向你介紹這方面的內容。

C# 枚舉和常量應用區別是什么呢?

當我們需要定義的時候呢,優先考慮枚舉。

在C#中,枚舉的真正強大之處是它們在后臺會實例化為派生于基類System.Enum的結構。這表示可以對它們調用方法,執行有用的任務。注意因為.NET Framework的執行方式,在語法上把枚舉當做結構是不會有性能損失的。實際上,一旦代碼編譯好,枚舉就成為基本類型,與int和float類似。

但是在實際應用中,你也許會發現,我們經常用英語定義枚舉類型,因為開發工具本來就是英文開發的,美國人用起來,就直接能夠明白枚舉類型的含義。其實,我們在開發的時候就多了一步操作,需要對枚舉類型進行翻譯。沒辦法,誰讓編程語言是英語寫的,如果是漢語寫的,那我們也就不用翻譯了,用起枚舉變得很方便了。舉個簡單的例子,TimeOfDay.Morning一看到Morning,美國人就知道是上午,但是對于中國的使用者來說,可能有很多人就看不懂,這就需要我們進行翻譯、解釋,就向上面的getTimeOfDay()的方法,其實就是做了翻譯工作。所以,在使用枚舉的時候,感覺到并不是很方便,有的時候我們還是比較樂意創建常量,然后在類中,聲明一個集合來容納常量和其意義。

C# 枚舉和常量之使用常量定義:這種方法固然可行,但是不能保證傳入的參數day就是實際限定的。

  1. using System;  
  2. using System.Collections.Generic;  
  3.  //C# 枚舉和常量應用區別
  4. public class TimesOfDay  
  5. {  
  6. public const int Morning = 0;  
  7. public const int Afternoon = 1;  
  8. public const int Evening = 2;  
  9. public static Dictionary﹤intstring﹥ list;  
  10. /// ﹤summary﹥  
  11. /// 獲得星期幾  
  12. /// ﹤/summary﹥  
  13. /// ﹤param name="day"﹥﹤/param﹥  
  14. /// ﹤returns﹥﹤/returns﹥  
  15. public static string getTimeNameOfDay(int time)  
  16. {  
  17. if (list == null || list.Count ﹤= 0)  
  18. {  
  19. list = new Dictionary﹤intstring﹥();  
  20. list.Add(Morning, "上午");  
  21. list.Add(Afternoon, "下午");  
  22. list.Add(Evening, "晚上");  
  23. }  
  24.  
  25. return list[time];  
  26. }  

希望能夠找到一種比較好的方法,將枚舉轉為我們想要的集合。搜尋了半天終于找到了一些線索。通過反射,得到針對某一枚舉類型的描述。

C# 枚舉和常量應用區別之枚舉的定義中加入描述

  1. using System;  
  2. using System.ComponentModel;  
  3.  //C# 枚舉和常量應用區別
  4. public enum TimeOfDay  
  5. {  
  6. [Description("上午")]  
  7. Moning,  
  8. [Description("下午")]  
  9. Afternoon,  
  10. [Description("晚上")]  
  11. Evening,  
  12. }; 

C# 枚舉和常量應用區別之獲得值和表述的鍵值對

  1. /// ﹤summary﹥  
  2. /// 從枚舉類型和它的特性讀出并返回一個鍵值對  
  3. /// ﹤/summary﹥  
  4. /// ﹤param name="enumType"﹥  
  5. Type,該參數的格式為typeof(需要讀的枚舉類型)  
  6. ﹤/param﹥  
  7. /// ﹤returns﹥鍵值對﹤/returns﹥  
  8. public static NameValueCollection   
  9. GetNVCFromEnumValue(Type enumType)  
  10. {  
  11. NameValueCollection nvc = new NameValueCollection();  
  12. Type typeDescription = typeof(DescriptionAttribute);  
  13. System.Reflection.FieldInfo[]   
  14. fields = enumType.GetFields();  
  15. string strText = string.Empty;  
  16. string strValue = string.Empty;  
  17. foreach (FieldInfo field in fields)  
  18. {  
  19. if (field.FieldType.IsEnum)  
  20. {  
  21. strValue = ((int)enumType.InvokeMember(  
  22. field.Name, BindingFlags.GetField, null,   
  23. nullnull)).ToString();  
  24. object[] arr = field.GetCustomAttributes(  
  25. typeDescription, true);  
  26. if (arr.Length ﹥ 0)  
  27. {  
  28. DescriptionAttribute aa =   
  29. (DescriptionAttribute)arr[0];  
  30. strText = aa.Description;  
  31. }  
  32. else 
  33. {  
  34. strText = field.Name;  
  35. }  
  36. nvc.Add(strText, strValue);  
  37. }  
  38. }  //C# 枚舉和常量應用區別
  39. return nvc;  

當然,枚舉定義的也可以是中文,很簡單的解決的上面的問題,但是,我們的代碼看起來就不是統一的語言了。

  1. ChineseEnum  
  2. public enum TimeOfDay  
  3. {  
  4. 上午,  
  5. 下午,  
  6. 晚上,  

C# 枚舉和常量應用區別的基本情況就向你介紹到這里,希望對你了解和學習C# 枚舉有所幫助。

【編輯推薦】

  1. C# listview進度條顯示淺析
  2. C# 進度條效果實現實例
  3. C# 枚舉簡介及優點淺析
  4. C# 枚舉實例應用淺析
  5. C# 枚舉常用方法淺析
責任編輯:仲衡 來源: 博客園
相關推薦

2009-08-18 10:35:46

C#枚舉類型

2009-08-17 17:49:20

C# 枚舉

2009-08-18 10:30:30

C#枚舉

2009-08-18 09:51:18

C#枚舉類型

2009-08-18 12:52:33

C#枚舉類型

2009-08-17 17:56:32

C# 枚舉

2009-08-18 09:37:14

C#枚舉類型

2009-08-17 17:36:08

C# 枚舉

2009-08-18 13:00:59

C#枚舉類型

2009-08-18 10:41:38

C#枚舉類型

2009-08-13 14:06:37

C#結構體結構體和類的區別

2021-08-04 08:33:59

TypeScriptConst Readonly

2009-08-07 08:53:52

C# ICloneab

2009-09-07 04:19:56

C#窗體事件

2009-08-27 14:12:02

C# interfac

2009-08-21 11:31:59

異步和多線程的區別

2009-08-27 13:50:08

C# StringBu

2009-08-19 10:41:14

C# switch和c

2009-08-24 15:12:13

C# 泛型接口

2009-08-13 17:30:30

C#構造函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜资源| 一区二区视频免费观看 | 99视频 | 蜜桃av鲁一鲁一鲁一鲁 | www.亚洲国产精品 | 久久国产精品一区二区三区 | 日韩免费一二三区 | 精品国产精品一区二区夜夜嗨 | 成人福利影院 | 精品色| 精品国产乱码久久久久久牛牛 | 综合国产 | 大伊人久久 | 久久婷婷麻豆国产91天堂 | 视频一二区 | 日本免费一区二区三区四区 | 最新午夜综合福利视频 | 国产一级成人 | 免费av在线| 精品九九在线 | 欧美一级免费观看 | 精品视频在线一区 | 蜜桃免费一区二区三区 | 成人不卡 | 日韩高清www | 日本不卡一区二区三区在线观看 | 日韩视频在线一区 | 日本精品一区二区 | 国产福利网站 | 91久久精品 | av一区二区在线观看 | 日韩欧美一区二区三区四区 | 日本欧美国产在线观看 | 成人精品国产一区二区4080 | 久久久91精品国产一区二区三区 | 日韩亚洲一区二区 | www.日日干 | 特黄毛片| 国产综合精品一区二区三区 | 99pao成人国产永久免费视频 | 51ⅴ精品国产91久久久久久 |