在泛型類型中,由於泛型類型即可以是引用類型也可以是值類型,所以不能用null來表示默認值。這里通過default來進行。引用類型的default將泛型類型初始化null,值類型的default將泛型類型初始化為0。
之所以會用到default關鍵字,是因為需要在不知道類型參數為值類型還是引用類型的情況下,為對象實例賦初值。考慮以下代碼:
class TestDefault<T>
{
public T foo()
{
T t = null; //???
return t;
}
}
如果我們用int型來綁定泛型參數,那么T就是int型,那么注釋的那一行就變成了 int t = null;顯然這是無意義的。為了解決這一問題,引入了default關鍵字:
class TestDefault<T>
{
public T foo()
{
return default(T);
}
}