91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#枚舉和常量應用有什么區別

發布時間:2021-06-12 18:05:35 來源:億速云 閱讀:170 作者:栢白 欄目:編程語言

這篇文章主要介紹了C#枚舉和常量應用有什么區別,具有一定借鑒價值,需要的朋友可以參考下。下面就和我一起來看看吧。

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

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

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

using System;  using System.Collections.Generic;   //C# 枚舉和常量應用區別public class TimesOfDay  {  public const int Morning = 0;  public const int Afternoon = 1;  public const int Evening = 2;  public static Dictionary﹤int, string﹥ list;  /// ﹤summary﹥  /// 獲得星期幾  /// ﹤/summary﹥  /// ﹤param name="day"﹥﹤/param﹥  /// ﹤returns﹥﹤/returns﹥  public static string getTimeNameOfDay(int time)  {  if (list == null || list.Count ﹤= 0)  {  list = new Dictionary﹤int, string﹥();  list.Add(Morning, "上午");  list.Add(Afternoon, "下午");  list.Add(Evening, "晚上");  }   return list[time];  }  }

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

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

using System;  using System.ComponentModel;   //C# 枚舉和常量應用區別public enum TimeOfDay  {  [Description("上午")]  Moning,  [Description("下午")]  Afternoon,  [Description("晚上")]  Evening,  };

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

/// ﹤summary﹥  /// 從枚舉類型和它的特性讀出并返回一個鍵值對  /// ﹤/summary﹥  /// ﹤param name="enumType"﹥  Type,該參數的格式為typeof(需要讀的枚舉類型)  ﹤/param﹥  /// ﹤returns﹥鍵值對﹤/returns﹥  public static NameValueCollection   GetNVCFromEnumValue(Type enumType)  {  NameValueCollection nvc = new NameValueCollection();  Type typeDescription = typeof(DescriptionAttribute);  System.Reflection.FieldInfo[]   fields = enumType.GetFields();  string strText = string.Empty;  string strValue = string.Empty;  foreach (FieldInfo field in fields)  {  if (field.FieldType.IsEnum)  {  strValue = ((int)enumType.InvokeMember(  field.Name, BindingFlags.GetField, null,   null, null)).ToString();  object[] arr = field.GetCustomAttributes(  typeDescription, true);  if (arr.Length ﹥ 0)  {  DescriptionAttribute aa =   (DescriptionAttribute)arr[0];  strText = aa.Description;  }  else {  strText = field.Name;  }  nvc.Add(strText, strValue);  }  }  //C# 枚舉和常量應用區別return nvc;  }

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

ChineseEnum  public enum TimeOfDay  {  上午,  下午,  晚上,  }

以上就是C#枚舉和常量應用有什么區別的詳細內容了,看完之后是否有所收獲呢?如果想了解更多相關內容,歡迎來億速云行業資訊!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

建阳市| 江津市| 枞阳县| 邓州市| 射洪县| 剑阁县| 勃利县| 江川县| 海盐县| 丹巴县| 突泉县| 双桥区| 隆林| 社旗县| 夏河县| 兴文县| 肥乡县| 清水县| 仙居县| 荣昌县| 富民县| 定兴县| 铁岭县| 嘉兴市| 南通市| 太仓市| 武安市| 隆化县| 三原县| 象州县| 淮北市| 襄汾县| 庄浪县| 台州市| 尉犁县| 沂水县| 房产| 罗平县| 朔州市| 红原县| 深州市|