¿Es esta una forma segura y eficiente de manejar la lectura de valores nulos en una base de datos utilizando genéricos?

StackOverflow https://stackoverflow.com/questions/1438888

  •  10-07-2019
  •  | 
  •  

Pregunta

He estado jugando con genéricos y esperaba poder obtener algunos comentarios o sugerencias sobre una función que creé para ayudar a manejar la lectura de valores nulos de la base de datos. Mi principal preocupación está en la declaración if. ¿Hay una mejor manera de averiguar si T es una cadena ect? Gracias.

public static T CheckNull<T>(object value)
    {
        if ((value != null) && value.Equals(DBNull.Value))
        {
            if (object.ReferenceEquals(typeof(T), typeof(String)))
                value = string.Empty;
            else if (object.ReferenceEquals(typeof(T), typeof(Boolean)))
                value = false;
            else
                value = null;
        }
        return (T)value;
    }
¿Fue útil?

Solución

Independientemente del tipo de T , puede recurrir a default (T) que proporcionará el valor predeterminado para el tipo dado ( string.Empty , 0 , false , null , etc ...):

value = default(T);

Editar: default (string) , sin embargo, devuelve nulo .

Otros consejos

También necesita cubrir otros tipos de datos primitivos.

value = default(T);

Esto devuelve nulo si es un tipo de referencia, de lo contrario 0, falso o lo que sea un valor predeterminado apropiado del tipo T dado.

Nota: el valor predeterminado (cadena) es nulo , no string.Empty. Si desea que sea String.Empty , debe implementar esto como una excepción.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top