2011-10-07 550 views
1

我有一個用戶控件下面的代碼:C#枚舉 - 是否爲空?

public partial class MyControl : System.Web.UI.UserControl 
{  
    public Enums.InformationSubCategory SubCategory { get; set; } 

    ...omitted code 
} 

Enums.InformationSubCategoryenum我在別處定義的想法是,我可以這樣做:

Example 1. <my:MyControl runat="server" SubCategory="Food" ...... /> 
Example 2. <my:MyControl runat="server" ...... /> 

如果我不去爲SubCategory指定一個值,SubCategory的值在MyControl的代碼隱藏中會是什麼?是null還是應用默認值?我注意到,與int屬性,它默認爲零。

回答

2

領域得到初始化爲default(T)。記住某種類型默認值的簡單方法是在明顯的實現中它對應於二進制零。

對於enum這意味着底層整數類型被設置爲0默認情況下,這對應於在枚舉所定義的第一個值。

這就是爲什麼它是常見的一個枚舉None命名的第一個值。

+0

'在枚舉中定義的第一個值' - 假設沒有明確的值被賦值,即。 'enum Foo {Bar = 1,None = 0}' –

+0

是的,這就是爲什麼我說「默認」。 – CodesInChaos

+0

@CodeInChaos如果我已將非零整數分配給所有枚舉成員,該怎麼辦? – Arj

0

這將是0,因爲你的enum默認是基於Int32

+0

啓動這將是0,但也可以是一個字節或短。 –

+0

@亨克 - 這就是爲什麼我說'默認'。 –

+0

是的,你是對的。我認爲編譯器可以自由選擇。 http://msdn.microsoft.com/en-us/library/cc138362.aspx –

0

默認基礎類型枚舉元素爲int。默認情況下,第一個枚舉的值爲0,並且每個相繼的枚舉的值增加1。例如:

enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri}; 

在該枚舉,星期六是0,太陽是1,星期一是2,和等等。枚舉器可以有初始化器來覆蓋默認值。

enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri}; 

在此列舉,元件的序列被強制爲1而不是0

+0

關於'enum's的很好的解釋,但是沒有回答這個問題! – Arj