ジェネリック コードの default キーワード (C# プログラミング ガイド)
更新 : 2007 年 11 月
ジェネリック クラスとジェネリック メソッドでは、あらかじめ以下の情報を把握していない場合に、パラメータ化された型 T に既定値を割り当てる方法が 1 つの問題となります。
T が参照型か値型か
T が値型の場合、数値か構造体か
パラメータ化された型 T の変数がある場合、ステートメント t = null は、T が参照型のときにのみ有効です。また、t = 0 は、数値では機能しますが、構造体では機能しません。この問題を解決するには、default キーワードを使用します。このキーワードは、参照型の場合には null を返し、数値の値型にはゼロを返します。構造体の場合、ゼロまたは null (値型か参照型かによって変わります) に初期化された構造体の各メンバを返します。GenericList<T> クラスで default キーワードを使用する方法の例を次に示します。詳細については、「ジェネリックの概要 (C# プログラミング ガイド)」を参照してください。
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;
}
}