泛型Default關(guān)鍵字
在泛型類和泛型方法中產(chǎn)生的一個問題是玩祟,在預(yù)先未知以下情況時,如何將默認(rèn)值分配給參數(shù)化類型T:
(1)T是引用類型還是值類型屿聋。
(2)如果T為值類型空扎,則它是數(shù)值還是結(jié)構(gòu)。
給定參數(shù)化類型T的一個變量t润讥,只有當(dāng)T為引用類型時转锈,語句t= null才有效;只有當(dāng)T為數(shù)值類型而不是結(jié)構(gòu)時楚殿,語句t = 0才能正常使用撮慨。解決方案是使用default關(guān)鍵字,此關(guān)鍵字對于引用類型會返回空,對于數(shù)值類型會返回零砌溺。對于結(jié)構(gòu)影涉,此關(guān)鍵字將返回初始化為零或空的每個結(jié)構(gòu)成員,具體取決于這些結(jié)構(gòu)是值類型還是引用類型规伐。以下來自GenericList類的示例顯示了如何使用default關(guān)鍵字蟹倾。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DefaultGeneric
{
class Program
{
static void Main(string[] args)
{
}
}
public class GenericList<T>
{
private class Node
{
public Node Next;
public T Data;
}
private Node head;
public T GetNext()
{
T temp = default(T);
Node current = head;
if (current != null)
{
temp = current.Data;
current = current.Next;
}
return temp;
}
}
}