程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 關於enum應用的總結

關於enum應用的總結

編輯:.NET實例教程
1、關於enum的定義
 

/// <summary>
    /// 新聞、下載資源等的審核狀態
    /// </summary>
    public enum ApplyStatus
    {
        /// <summary>
        /// 審核不通過
        /// </summary>
        NotPassed = -1,
        /// <summary>
        /// 未審核
        /// </summary>

>
        NotApply = 0,
        /// <summary>
        /// 審核通過
        /// </summary>
        Passed = 1
    }2、符號名和常數值的互相轉換

           

ApplyStatus status = ApplyStatus.NotApply;
int fabNum = (int)status;//轉換為常數值。必須使用強制轉換。
ApplyStatus statusString = (ApplyStatus)1;//常數值轉換成符號名。如果使用ToString(),則是((ApplyStatus)1).ToString(),注意必須有括號。
stringtyle="COLOR: #000000"> applyType = status.ToString();//顯示符號名
string applyVal = status.ToString("D");//顯示常數值
3、獲得所有符號名的方法(具體參見Enum類)

       

foreach (string s in Enum.GetNames(typeof(ApplyStatus)))
{
       Console.WriteLine(s);
}
4、將枚舉作為位標志來處理


根據下面的兩個例子,粗略地說,一方面,設置標志[Flags]或者[FlagsAttribute],則表明要將符號名列舉出來;另一方面,可以通過強制轉換,將數字轉換為符號名。說不准確。看下面的例子體會吧。注意:

          例一:
          Fabric fab = Fabric.Cotton | Fabric.Rayon | Fabric.Silk;
           Console.WriteLine("MyFabric = {0}", fab);//輸出:Fabric.Cotton | Fabric.Rayon | Fabric.Silk;

例二:
class FlagsAttributeDemo
{
    // Define an Enum without FlagsAttribute.
    enum SingleHue : short
    {
        Black = 0,


        Red = 1,
        Green = 2,
        Blue = 4
    };

    // Define an Enum with FlagsAttribute.
    [FlagsAttribute]
    enum MultiHue : short
    {
        Black = 0,
        Red = 1,
        Green = 2,
        Blue = 4
    };

    static void Main( )
    {
        Console.WriteLine(
            "This example of the FlagsAttribute attribute \n" +
            "generates the following output." );
        Console.WriteLine(
            "\nAll possible combinations of values of an \n" +
            "Enum without FlagsAttribute:\n" );
       
        // Display all possible combinations of values.
        for( int val = 0; val <= 8; val++ )
            Console.WriteLine( "{0,3} - {1}", val, ( (SingleHue)val ).ToString( ) );

        Console.WriteLine( "\nAll possible combinations of values of an \n" + "Enum with FlagsAttribute:\n" );
       
        // Display all possible combinations of values.
        // Also display an invalid value.
        for( int val = 0; val &

lt;= 8; val++ )
            Console.WriteLine ( "{0,3} - {1}", val, ( (MultiHue)val ).ToString( ) );
    }
}

/*
This example of the FlagsAttribute attribute
generates the following output.

All possible combinations of values of an
Enum without FlagsAttribute:

0 - Black
1 - Red
2 - Green
3 - 3
4 - Blue
5 - 5
6 - 6
7 - 7
8 - 8

All possible combinations of values of an
Enum with FlagsAttribute:

0 - Black
1 - Red
2 - Green
3 - Red, Green
4 - Blue
5 - Red, Blue
6 - Green, Blue
7 - Red, Green, Blue
8 - 8
*/


5、枚舉作為函數參數。經常和switch結合起來使用。下面舉例

        public static double GetPrice(Fabric fab)
        {
            switch (fab)
            {
                case Fabric.Cotton: return (3.55);
                case Fabric.Silk: return (5.65);
                case Fabric.Wool: return (4.05);
                case Fabric.Rayon: return (3.20);
                case Fabric.Other: return (2.50);
                default: return (0.0);
            }
        }

6、上面三點一個完整的例子

        //1、enum的定義
        public enum Fabric : short
    &
nbsp;   {
            Cotton = 1,
            Silk = 2,
            Wool = 3,
            Rayon = 8,
            Other = 128
        }

        //將枚舉作為參數傳遞
        public static double GetPrice(Fabric fab)
        {
            switch (fab)
            {
                case Fabric.Cotton: return (3.55);
                case Fabric.Silk : return (5.65);
                case Fabric.Wool: return (4.05);
                case Fabric.Rayon: return (3.20);
                case Fabric.Other: return (2.50);
                default: return (0.0);
            }
        }

        public static void Main()
        {
            Fabric fab = Fabric.Cotton;
            int fabNum = (int)fab;
            string fabType = fab.ToString();
            string fabVal = fab.ToString ("D");
  &
nbsp;         double cost = GetPrice(fab);
            Console.WriteLine("fabNum = {0}\nfabType = {1}\nfabVal = {2}\n", fabNum, fabType, fabVal);
            Console.WriteLine("cost = {0}", cost);
        }

7、Enum類的使用

Enum.IsDefinde、Enum.Parse兩種方法經常一起使用,來確定一個值或符號是否是一個枚舉的成員,然後創建一個實例。Enum.GetName打印出一個成員的值;Enum.GetNames打印出所有成員的值。其中注意typeof的使用。這一點很重要。

        public enum MyFamily
        {
            YANGZHIPING = 1,
  &nbs
p;         GUANGUIQIN = 2,
            YANGHAORAN = 4,
            LIWEI = 8,
            GUANGUIZHI = 16,
            LISIWEN = 32,
            LISIHUA = 64,
        }

            string s = "YANGHAORAN";
            if (Enum.IsDefined(typeof(MyFamily), s))
            {
                MyFamily f = (MyFamily)Enum.Parse(typeof(MyFamily), s);
                GetMyFamily(f);
              &n
bsp; Console.WriteLine("The name is:" + Enum. GetName(typeof(MyFamily), 2));
                string[] sa = Enum.GetNames(typeof(MyFamily));
                foreach (string ss in sa)
                {
                    Console.WriteLine(ss);
                }
            }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved