Palabra clave predeterminada en código genérico (Guía de programación de C#)
Actualización: noviembre 2007
Un problema asociado a las clases y métodos genéricos es la forma de asignar un valor predeterminado a un tipo parametrizado T cuando no se tiene por anticipado la siguiente información:
Si T será un tipo de referencia o un tipo de valor.
Si T es un tipo de valor, si será un valor numérico o una estructura.
Dada una variable t de un tipo parametrizado T, la instrucción t = null sólo es válida si T es un tipo de referencia y t = 0 sólo funcionará con los tipos de valor numérico, pero no con las estructuras. La solución es utilizar la palabra clave default, que devolverá null para los tipos de referencia y cero para los tipos de valor numérico. En el caso de las estructuras, devolverá cada miembro de la estructura inicializado con el valor cero o null, dependiendo de si son tipos de valor o de referencia. El ejemplo siguiente de las clases GenericList<T> muestra cómo utilizar la palabra clave default. Para obtener más información, vea Información general sobre los genéricos (Guía de programación de 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;
}
}
Vea también
Conceptos
Referencia
Genéricos (Guía de programación de C#)
Métodos genéricos (Guía de programación de C#)