domingo, 17 de febrero de 2013

Default en C#

Hace mucho que no hago nada muy competitivo en C#, luego para calentar motores empece con una caracteristica que me estaban preguntando hace unos dias. Default(T)

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