一周學C#第六天——枚舉

來源:互聯網
上載者:User
 

一周學C#_第6天

枚舉

1          類型

實值型別

l 變數直接包含它們自己的資料

l 局部變數總是放在棧stack中

參考型別

n 變數間接指向它們的資料

n 局部變數指向堆heap中的對象

枚舉enum

實值型別

結構struct

實值型別

類class

參考型別

介面interface

參考型別

數組[]array

參考型別

委託delegate

參考型別

C#規定,類如int、double等內在類,屬於結構,C#稱之為“簡單類型”。

簡單類型與自訂類型的最大區別在於:簡單類型有字面運算式;而自訂類型沒有。

還有,第三種類型:指標。指標只能用在unsafe塊(非安全的程式碼)中。

2          枚舉類型

枚舉類型是一個使用者聲明的實值型別

enum Suit

{

       Clubs, Diamonds, Hearts, Spades

}//Suit表示一副牌,有4中花色:梅花,方塊,紅心,黑桃

sealed class Example

{

       static void Main()

       {

              ...

              Suit lead=Spades;//這裡錯誤

              ...

              Suit trumps=Suit.Clubs;//這樣才正確

              ...

       }

}

枚舉聲明:

可以出現中類聲明的相同地方

包括:名字、存取權限、內在的類型和枚舉的成員。

其中的變數的作用範圍是定義它的枚舉

Suit trumps=Clubs;//這是錯誤的,必須將Clubs限定為Suit的一個成員,如下

Suit trumps=Suit.Clubs;

3          枚舉的注意事項

枚舉值預設類型為int

可以選擇任一一個內在的整數類型

但是不能是字元型

enum Suit:int//內在類型為int,可以省略

{

       Clubs,

       Diamonds,

       Heart=42,//成員預設取值為前一個成員值+1,但是也可以自己賦初始值

       Spades,//最後一個成員的分號是可選的

};//結尾分號也是可選的

枚舉類型中的內在變數可以顯式聲明的類型包括:sbyte, byte, short, ushort, int, uint, long,ulong.

如果沒有顯式聲明,預設的類型為int。

成員的取值必須和枚舉聲明的內在類型相同。並且,必須在內在類型的範圍之內。

如果沒有給成員賦值,其取值為前一成員值+1,第一成員預設值為1。

枚舉成員的取值可以是相同值。

最後一個枚舉成員可以用逗號結尾

枚舉成員預設存取權限是public。

4          使用枚舉

枚舉類型隱式的派生自System.Enum

namespace System

{

       public abstract class Enum

       {

              //靜態函數

              public static string[] GetNames(Type);

              ...

              //執行個體函數

              public override string ToString();

              //建構函式

              protected Enum();

       }

}

 

Suit trumps=Suit.Clubs;

string[] names=System.Enum.GetNames(trumps.GetType());

...

Console.Write(names[0]);//Clubs

Console.Write(trumps);//Clubs

Console.Write(“{0}”,trumps);//Clubs

Console.Write(trumps.ToString());//Clubs

Console.Write((Suit)24);//24

 

System.Enum是System命名空間的一個抽象類別。它實作類別一系列的介面:

              public abstract class Enum:IComparable,IFormattable,IConvertible

              {...}

枚舉隱式派生於System.Enum

System.Enum只能被用來作為一個枚舉類型的隱含基類。

不能顯式的從System.Enum派生自己的類。

不能建立System.Enum類的執行個體。

5          枚舉的操作符

枚舉變數被當做整數變數來看待。

但在大部分情況下不能使用移位操作符。

6          枚舉的轉換

隱式轉換

l 0可以轉為任一enum類型

l 從不拋出錯誤

顯式轉換

l 從enum到enum通過內在類型轉換

l 從enum轉為數實值型別(包含char)

l 從數實值型別(包括char)轉為enum

l 從不拋出錯誤

0可以被轉為任一enum類型,不管此enum類型是否包括0。

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.