最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#如何給枚舉類型增加一個描述特性詳解

 更新時間:2019年02月15日 11:40:25   作者:瀟十一郎  
這篇文章主要給大家介紹了關(guān)于C#如何給枚舉類型增加一個描述特性的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

相信很多人對枚舉并不陌生,枚舉可以很方便和直觀的管理一組特定值。如果我們在頁面上直接輸出我們希望匹配的漢語意思或則其他滿足我們需求的語句就更好了,當(dāng)然,通常小伙伴們都會再頁面上if(enum==1) “我是一個枚舉”或者switch(enum)這種方式解決。

枚舉的優(yōu)點:

<1>枚舉可以使代碼更易于維護(hù),有助于確保給變量指定合法的、期望的值。

<2>枚舉使代碼更清晰,允許用描述性的名稱表示整數(shù)值,而不是用含義模糊的數(shù)來表示。

<3>枚舉使代碼更易于鍵入。在給枚舉類型的實例賦值時,VS.NET IDE會通過IntelliSense彈出一個包含可接受值的列表框,減少了按鍵次數(shù),并能夠讓我們回憶起可能的值

那今天我們就來介紹一種更優(yōu)雅的解決方法

開整

先定義一個枚舉類

  enum StatusEnum
 {
  [Description("修改")]
  Update = 1,
  [Description("新增")]
  Insert = 2,
  [Description("刪除")]
  Delete = 3
 }

Description是屬性特性的意思。記住即可

大家要記住,所有的特性類必須繼承自 Attribute,所以,我們自定義一個特性類

/// <summary>
 /// 備注特性
 /// </summary>
 public class RemarkAttribute : Attribute
 {
  /// <summary>
  /// 備注
  /// </summary>
  public string Remark { get; set; }

  public RemarkAttribute(string remark)
  {
   this.Remark = remark;
  }
 }

有了這個特性類之后呢,我們還需要一個枚舉擴(kuò)展類

 /// <summary>
 /// 枚舉擴(kuò)展類
 /// </summary>
 public static class EnumExtension
 {
  /// <summary>
  /// 獲取枚舉的備注信息
  /// </summary>
  /// <param name="em"></param>
  /// <returns></returns>
  public static string GetRemark(this Enum value)
  {
   FieldInfo fi = value.GetType().GetField(value.ToString());
   if (fi == null)
   {
    return value.ToString();
   }
   object[] attributes = fi.GetCustomAttributes(typeof(RemarkAttribute), false);
   if (attributes.Length > 0)
   {
    return ((RemarkAttribute)attributes[0]).Remark;
   }
   else
   {
    return value.ToString();
   }
  }

  public static string GetEnumDescription(this Enum value)
  {
   FieldInfo fi = value.GetType().GetField(value.ToString());
   DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
   if (attributes.Length > 0)
   {
    return attributes[0].Description;
   }
   else
   {
    return value.ToString();
   }
  }
 }

需要引入命名空間:

using System.Collections.Generic;
using System.ComponentModel;

有了這個枚舉擴(kuò)展類,我們就可以直接使用了

 Console.WriteLine((int)StatusEnum.Insert);//輸出原有枚舉值
 Console.WriteLine(StatusEnum.Insert.GetRemark());//獲取枚舉備注信息
 Console.WriteLine(StatusEnum.Insert.GetEnumDescription());//獲取枚舉特性值

 

調(diào)試過程

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • WinFrom中l(wèi)abel背景透明的實現(xiàn)方法

    WinFrom中l(wèi)abel背景透明的實現(xiàn)方法

    這篇文章主要介紹了WinFrom中l(wèi)abel背景透明的實現(xiàn)方法,方法簡單實用,是C#程序設(shè)計中非常實用的技巧,需要的朋友可以參考下
    2014-09-09
  • c# 使用特定帳號密碼訪問Windows網(wǎng)路共享

    c# 使用特定帳號密碼訪問Windows網(wǎng)路共享

    這篇文章主要介紹了c# 使用特定帳號密碼訪問Windows網(wǎng)路共享的方法,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • Unity3D動態(tài)對象優(yōu)化代碼分享

    Unity3D動態(tài)對象優(yōu)化代碼分享

    這篇文章主要介紹了Unity3D動態(tài)對象優(yōu)化代碼分享的相關(guān)資料,需要的朋友可以參考下
    2015-03-03
  • c#實現(xiàn)最簡潔的快速排序(你絕對可以看懂)

    c#實現(xiàn)最簡潔的快速排序(你絕對可以看懂)

    這篇文章主要給大家介紹了關(guān)于利用c#實現(xiàn)如何最簡潔的快速排序,實現(xiàn)的方法你絕對可以看懂,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用c#具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • C#使用log4net記錄日志

    C#使用log4net記錄日志

    本文詳細(xì)講解了C#使用log4net記錄日志的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • C#如何使用DateTime.Now.AddDays方法獲取任一天的信息

    C#如何使用DateTime.Now.AddDays方法獲取任一天的信息

    使用DateTime.Now屬性可以得到當(dāng)前的日期信息,此時調(diào)用ToString方法,并在該方法中添加指定的格式化字符串,可以按照要求輸出當(dāng)前日期的信息,本文介紹C#使用DateTime.Now.AddDays方法獲取任一天的信息,感興趣的朋友一起看看吧
    2024-01-01
  • oledb連接access數(shù)據(jù)庫示例

    oledb連接access數(shù)據(jù)庫示例

    本文為大家介紹一個oledb連接access數(shù)據(jù)庫的示例,代碼很簡單,可以直接使用
    2014-01-01
  • C#自定義實現(xiàn)多程序共享內(nèi)存空間

    C#自定義實現(xiàn)多程序共享內(nèi)存空間

    這篇文章主要為大家詳細(xì)介紹了C#如何自定義實現(xiàn)多程序共享內(nèi)存空間,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-10-10
  • C#中讀取XML文件的四種常用方法

    C#中讀取XML文件的四種常用方法

    Xml是Internet環(huán)境中跨平臺的,依賴于內(nèi)容的技術(shù),是當(dāng)前處理結(jié)構(gòu)化文檔信息的有力工具,下面我們就來看看C#中讀取XML文件的方法都有哪些吧
    2025-02-02
  • 解析C#中斷言與異常的應(yīng)用方式及異常處理的流程控制

    解析C#中斷言與異常的應(yīng)用方式及異常處理的流程控制

    這篇文章主要介紹了C#中斷言與異常的應(yīng)用方式及異常處理的流程控制,一般來說斷言用于修正程序員自己的錯誤而異常用于應(yīng)對程序運(yùn)行過程中可能出現(xiàn)的錯誤,需要的朋友可以參考下
    2016-01-01

最新評論

兴山县| 哈尔滨市| 太仆寺旗| 东丰县| 原平市| 德化县| 兴城市| 贵南县| 平邑县| 英超| 沙河市| 龙口市| 晋中市| 乳山市| 海兴县| 乐至县| 拜泉县| 扎鲁特旗| 遂川县| 泸水县| 蓝田县| 临邑县| 华阴市| 富宁县| 金乡县| 东莞市| 昆明市| 南江县| 文化| 蒙自县| 宾川县| 江川县| 南开区| 福建省| 深泽县| 沁水县| 休宁县| 平罗县| 定结县| 镇远县| 宕昌县|