Est-ce un moyen sûr et efficace de gérer la lecture des valeurs NULL dans une base de données à l'aide de Generics?

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

  •  10-07-2019
  •  | 
  •  

Question

Je jouais avec des génériques et espérais pouvoir obtenir des commentaires ou des suggestions sur une fonction que j'ai créée pour faciliter la lecture des valeurs nulles à partir de la base de données. Ma principale préoccupation concerne la déclaration if. Existe-t-il un meilleur moyen de savoir si T est un ect de chaîne? Merci.

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;
    }
Était-ce utile?

La solution

Quel que soit le type de T , vous pouvez revenir à default (T) qui fournira la valeur par défaut pour le type donné ( string.Empty , 0 , false , null , etc ...):

value = default(T);

Edition: default (chaîne) renvoie cependant null .

Autres conseils

Vous devez également couvrir d'autres types de données primitifs.

value = default(T);

Cette valeur est NULL s'il s'agit d'un type de référence, sinon 0, false ou autre chose est une valeur par défaut appropriée du type donné T.

Remarque: par défaut (chaîne) est null , pas chaîne.Empty. Si vous voulez que ce soit String.Empty , vous devez l'implémenter en tant qu'exception.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top