C# Enum(枚舉) 用法紀錄


January 15, 2023(最後更新: August 27, 2024) 程式語言

C# Enum(枚舉) 用法紀錄


C# Enum(枚舉)用途與使用擴充方法取得description詳細紀錄

枚舉就是把一些常數的集合命名分類,以生活上的例子星期就是一種枚舉。

星期int
星期一1
星期二2
星期三3
星期四4
星期五5
星期六6
星期日7

如果有這種固定好的集合需頻繁使用,在程式上就可以以枚舉來實現。除了可方便管理,想在程式中用字串形式當key時,可以很明確知道用途,也不會有大小寫或是拼字錯誤的困擾。

使用範例

🔗

如果沒有預設對應的數字,就是照順序給值
Veiw = 0
Add = 1
Edit = 2...

C#
public enum LogBehavior
    {
        Veiw, Add, Edit, Delete, Search, Login, Send
    }

or

C#
public enum Month
    {
        Jan = 1, Feb = 2, Mar = 3, Apr = 4, May = 5, Jun = 6, 
        Jul = 7, Aug = 8, Sep = 9, Oct = 10, Nov = 11, Dec = 12
    }

取用enum參數的方式

C#
Console.WriteLine(LogBehavior.Veiw);
>>  Veiw

Console.WriteLine(LogBehavior.Veiw.GetHashCode());
>>  0

string month = Month.Jan.ToString(); 
Console.WriteLine(month);
>> Jan

int monthValue = (int)Month.Jan;  
Console.WriteLine(monthValue);
>> 1

實際運用例子

🔗

後端需要在每個回傳的API裡增加一個可擴充性的物件(List<dynamic>),裡面可以依據情況增加物件,但需加上特定參數告訴前端物件的資料性質。

利用枚舉就能輕鬆管理,要回傳物件的特定參數名稱,其他人也能直接照用,不會有人為字串拼錯或大小寫的錯誤,在之後需要其他特定參數也能直接往下增加擴充。

C#
public enum prop
{
    [Description("同步紀錄資訊")]
    SyncInfo,
    [Description("版本資訊")]
    VersionInfo
}

若要取得Description的內容,可使用此方法擴充,若無Description內容則回傳原始名稱。

C#
public static string GetDescription(this Enum value)
    {
        var field = value.GetType().GetField(value.ToString());
        var attribute = field?.GetCustomAttributes(typeof(DescriptionAttribute), false).FirstOrDefault() as DescriptionAttribute;
        return attribute == null ? value.ToString() : attribute.Description;
    }
C#
Console.WriteLine(prop.SyncInfo.GetDescription());
>> 同步紀錄資訊

參考資料
Extension Methods
C# enum 列舉 同時儲存內容值和中文說明 教學

Csharp



Avatar

Alvin

軟體工程師,喜歡金融知識、健康觀念、心理哲學、自助旅遊與系統設計。

相關文章






留言區 (0)



  or   

尚無留言