La meilleure façon d'éviter l'échec de Null avec le moulage de chaîne
_callReportCode = reader["Call Report Code"].ToString();
Je suis tenter de traiter la possibilité pour l'objet que je vais appeler ToString à être NULL.
Je vais utiliser l'instruction ci-dessus avec plusieurs variables et je ne veux pas faire un try/catch pour chacun... quelle est la meilleure façon de le faire nulle vérification pour les chaînes.
D'autres types de données que j'ai fait ceci:
int.TryParse(reader["Account Number"].ToString(), out _accountNumber);
Dans le présent code "lecteur" se réfère à un SqlDataReader mais ce n'est pas vraiment important pour cette question.
source d'informationauteur jth41
Vous devez vous connecter pour publier un commentaire.
Utiliser le null-coalescence de l'opérateur:
??
Si les données dans votre champ est
DBNull.Value
(plutôt quenull
), ce sera encore du travail, carDBNull.Value
n'est pasnull
de sorte que le??
ne sera pas utilisé, etDBNull.Value.ToString()
est""
qui est ce que vous voulez.Il sera de retour
string.Empty
si la valeur est null.Source: http://msdn.microsoft.com/en-us/library/astxcyeh.aspx
Mise à jour: il fonctionne également avec
DBNull
j'ai juste vérifié.Mise à jour 2: j'ai décidé de porter un test plus complet ici, juste pour être sûr:
Si votre chaîne est nullable, vous devez vérifier la valeur retournée par la
SqlDataReader
contreDBNull.Value
:Si l'objet renvoyé par
reader["Call Report Code"]
est pas unstring
c'estDBNull.Value
de sorte que leas
cast va définir la valeur de_callReportCode
ànull
.Si vous devez définir la chaîne de caractères non null dans le cas où la valeur de base de données est manquant, ajouter
??
comme ceci:Ma suggestion est de ne jamais convertir
ToString
lorsque les données n'est pas une chaîne, et si les données sont déjà une chaîne de caractères, puis de l'appel d'ToString
est redondant, et un cast est tout ce qui est nécessaire.Je fais l'hypothèse que le type de données dans la base de données est de type entier, dans ce cas, vous pouvez utiliser un nullable int.
J'ai fait une méthode d'extension pour faire cette chose.
Utilisation
La façon la plus simple que j'ai trouvé est
j'ai quelques plus facile et la Méthode commune.
utiliser en C#
vous pouvez créer une méthode que vous appelez quand vous voulez faire la vérification.
De cette façon, vous devez taper le try catch qu'une seule fois...
ou vous pouvez créer une extension de la méthode de la classe string pour ce faire
_callReportCode = Convert.ToString(reader["Appel Code de Rapport"]) devrait s'assurer il n'y a pas null.
Utiliser la ligne de code suivante:
au lieu de la ligne suivante:
J'aime en utilisant une combinaison de la null-coalescence de l'opérateur et la null opérateur conditionnel:
c'est essentiellement le même que celui de la
mais plus courte.
Vous pouvez effectuer une vérification à l'aide de
String.IsNullOrEmpty()
pour s'assurer qu'il ne va pas être null, ou vous pourriez écrire une extension de la méthode à exécuter une action si elle n'est pas nulle et une autre /rien si il est.