這段時間手裡有個有關訂單的項目,訂單一般有個狀態的,以前很多要時候都會想到訂單的狀態就那幾個種,就把它寫死吧,不用一個資料庫表了,太浪費資源了,但寫死了用一個數字來代表一種訂單狀態,這樣在編碼時還要記得什麼數字代碼什麼狀態,如果不小心把它寫錯了,會導致資料出錯。
後來想到.NET有個枚舉,這麼好的東西為何不用上來呢,這不但可以方便以後的代碼維護,也方便編碼。public enum OrderState
{
/**//// <summary>
/// 無效狀態
/// </summary>
Invalid = 0,
/**//// <summary>
/// 客戶詢價
/// </summary>
CustomerQuery = 1,
/**//// <summary>
/// 客戶落單
/// </summary>
CustomerOrdered = 2,
/**//// <summary>
/// 客戶付款
/// </summary>
ReceiverCustomerPayment = 4,
/**//// <summary>
/// 向供貨商訂貨
/// </summary>
SupplierOrdered = 8,
/**//// <summary>
/// 供貨商確認貨期
/// </summary>
SupplierOrderTerm = 16,
/**//// <summary>
/// 收到貨品
/// </summary>
RecieverGoods = 32,
/**//// <summary>
/// 客戶取消訂單
/// </summary>
CustomerCanceled = 64,
/**//// <summary>
/// 供貨商取消訂單
/// </summary>
SupplierCancelded = 128
}
但要從UI層看這些狀態怎麼處理呢?
利用switch casepublic static string GetOrderStateString(OrderState state)
{
switch (state)
{
case OrderState.Invalid:
return "無效值";
case OrderState.CustomerOrdered:
return "客戶下單";
case OrderState.CustomerCanceled:
return "客戶取消訂單";
case OrderState.CustomerQuery:
return "客戶詢價";
case OrderState.ReceiverCustomerPayment:
return "客戶已付款";
case OrderState.RecieverGoods:
return "訂單到貨";
case OrderState.SupplierCancelded:
return "供貨商取消";
case OrderState.SupplierOrdered:
return "已向供貨商訂貨";
case OrderState.SupplierOrderTerm:
return "供貨商確認貨期";
}
return "";
}
如果以後還有更多的訂單狀態就修改這個枚舉和一個方法就行了,這麼方便的東西為何就不用到我的程式中呢,我們在編碼中,要想盡方法使代碼簡單、易用、易維護。
枚舉中有兩個很實用的方法
1、GetHashCode() //返回該執行個體的值的雜湊碼
2、ToString() //將此執行個體的值轉換為其等效的字串表示
這兩個方法在編碼的時候會用到,GetHashCode()這個方法使用機會會更多。
有前枚舉的使用,我得出以上一點心得,與大家共用一下。