我有下面的代碼:請告訴我什麼是C#.net使用「默認」關鍵字的
我有一個枚舉:
public enum HardwareInterfaceType
{
Gpib = 1,
Vxi = 2,
GpibVxi = 3,
}
,並使用該枚舉是這樣:開始
HardwareInterfaceType type = default(HardwareInterfaceType);
請告訴我什麼是關鍵字「默認」在這裏做?它有什麼用處?
我有下面的代碼:請告訴我什麼是C#.net使用「默認」關鍵字的
我有一個枚舉:
public enum HardwareInterfaceType
{
Gpib = 1,
Vxi = 2,
GpibVxi = 3,
}
,並使用該枚舉是這樣:開始
HardwareInterfaceType type = default(HardwareInterfaceType);
請告訴我什麼是關鍵字「默認」在這裏做?它有什麼用處?
我相信默認是0,所以你將有一個無效的HardwareInterfaceType生成。我個人不喜歡這種編碼的枚舉。國際海事組織更清楚定義一個枚舉值「未定義」或「無」,然後初始化該變量。
帶枚舉的「問題」之一是它們可以被初始化爲枚舉中不存在的值。原來的程序員可能會認爲如果Enum定義中使用「default」關鍵字,enum將被初始化爲一些有效值。不正確,而IMO完全不能很好地使用「默認」關鍵字。
var foobar = default(HardwareInterfaceType);
Console.WriteLine(Enum.IsDefined(typeof(HardwareInterfaceType), foobar)); //returns false
Console.WriteLine(foobar); //returns 0
默認關鍵字主要用於編寫通用代碼時。
在泛型類和方法中,出現的一個問題是如果不知道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
在我的情況是什麼分配? – 2010-05-25 11:32:59
在你的情況下,它將「未定義」值賦值爲0. – 2010-05-25 11:38:38
default
將一種語言類型提供默認值 - 在數值的情況下,推而廣之,枚舉爲零。對於參考類型,默認值爲null
。
它更常用於類型未知的泛型。
我認爲,當你沒有創建任何類對象的新實例的默認鍵詞是用來說:
一種方式是這樣的
HardwareInterfaceType type = new HardwareInterfaceType();
和第二路是這樣也
HardwareInterfaceType type = default(HardwareInterfaceType);
上述代碼將創建hardwareinterfacetype的對象,但它不會創建e任何新的 內存。
+1 – Christian 2010-05-25 11:37:33