好好利用枚舉

來源:互聯網
上載者:User
       這段時間手裡有個有關訂單的項目,訂單一般有個狀態的,以前很多要時候都會想到訂單的狀態就那幾個種,就把它寫死吧,不用一個資料庫表了,太浪費資源了,但寫死了用一個數字來代表一種訂單狀態,這樣在編碼時還要記得什麼數字代碼什麼狀態,如果不小心把它寫錯了,會導致資料出錯。
      後來想到.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()這個方法使用機會會更多。
有前枚舉的使用,我得出以上一點心得,與大家共用一下。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.