Aqui les explico un poco de default(T).
Un ejemplo muy simple:
Estoy creando mi proprio diccionaria y tengo la siguiente implementacion.
class MyEmptyDictionary<K, V> : IDictionary<K, V>
{
bool IDictionary<K, V>.TryGetValue (K key, out V value)
{
return false;
}
....
}
El codigo anterior tiene problemas implementando la funcion TryGetValue. Cuando no se encuentra una llave. No tendria nada que asignar al parametro de salida, entonces uno piensa dejarlo asi como esta. Esa accion lleva al siguiente error. "The out parameter 'value' must be assigned to before control leaves the current method".
Luego, basicamente, lo que hace falta es devolver el valor por defecto (0, false, o dependiendo del tipo)
Luego la solucion es default(V)
class MyEmptyDictionary<K, V> : IDictionary<K, V>
{
bool IDictionary<K, V>.TryGetValue (K key, out V value)
{
value = default(V);
return false;
}
....
}
mas informacion
No hay comentarios:
Publicar un comentario