2010-05-25 42 views

回答

7

我相信默認是0,所以你將有一個無效的HardwareInterfaceType生成。我個人不喜歡這種編碼的枚舉。國際海事組織更清楚定義一個枚舉值「未定義」或「無」,然後初始化該變量。

帶枚舉的「問題」之一是它們可以被初始化爲枚舉中不存在的值。原來的程序員可能會認爲如果Enum定義中使用「default」關鍵字,enum將被初始化爲一些有效值。不正確,而IMO完全不能很好地使用「默認」關鍵字。

var foobar = default(HardwareInterfaceType); 
Console.WriteLine(Enum.IsDefined(typeof(HardwareInterfaceType), foobar)); //returns false 
Console.WriteLine(foobar); //returns 0 
+0

+1 – Christian 2010-05-25 11:37:33

4

默認關鍵字主要用於編寫通用代碼時。

在泛型類和方法中,出現的一個問題是如果不知道T是引用類型還是值類型,如何將默認值分配給參數化類型T,如果T是值類型,無論它是數值還是結構。

在你的情況下,分配0

static void Main(string[] args) 
    { 

     HardwareInterfaceType type = default(HardwareInterfaceType); 
     Console.WriteLine(type.ToString()); 

     type = HardwareInterfaceType.Gpib; 
     Console.WriteLine(type.ToString()); 

     Console.ReadLine(); 
    } 

    public enum HardwareInterfaceType 
    { 
     Gpib = 1, 
     Vxi = 2, 
     GpibVxi = 3, 
    } 

    //output 
    0 
    Gpib 
+0

在我的情況是什麼分配? – 2010-05-25 11:32:59

+1

在你的情況下,它將「未定義」值賦值爲0. – 2010-05-25 11:38:38

5

default將一種語言類型提供默認值 - 在數值的情況下,推而廣之,枚舉爲零。對於參考類型,默認值爲null

它更常用於類型未知的泛型。

2

我認爲,當你沒有創建任何類對象的新實例的默認鍵詞是用來說:

一種方式是這樣的

HardwareInterfaceType type = new HardwareInterfaceType(); 

和第二路是這樣也

HardwareInterfaceType type = default(HardwareInterfaceType); 

上述代碼將創建hardwareinterfacetype的對象,但它不會創建e任何新的 內存。

相關問題