Si des objets contiennent NULL ou vide, puis comment valider ou vérifier la condition pour la même chose?
Comment bool Vérifiez si l'objet obj fort> est J'ai le code comme suit: p> avec ce code, je reçois pls aide. P> Ici, je ne comprends pas .... P > Comment valider si cet objet est Y a-t-il une approche pour vérifier la même chose ?? p> p> null code> ou
Vide code> p>
nullréference exception code > AS
Référence d'objet non définie sur une instance d'un objet. code> p>
null code> ou
vide code> sans convertir en .tostring () ?? strong> p>
7 Réponses :
Vous obtenez la référence NULL parce que vous exécutez Pour faire fonctionner votre code, vous devez faire: P> obj.tostring () code> qui retournera la valeur de la méthode de ToString () de l'obj. Le problème est que dans la ligne précédente, vous avez défini obj vers NULL afin d'obtenir une référence d'objet non ... Erreur
string objString = (obj as string);
double d = Convert.ToDouble(string.IsNullOrEmpty(objString) ? "0.0" : objString);
OK .... Comment valider si cet objet est null code> ou
vide code> sans convertir en
.tostring () code> ??
Comme vous l'avez fait, sauf que vous n'appelez pas la méthode de Tostring
@ Tbohnen.jnr il n'y a pas de moulage à la chaîne; L'appel de la totring n'est pas un casting.
Oui, c'est génial, tout comme c # :-)
Mais cette approche ne manipule pas les chaînes vides
Très première fois, j'entends parler de NULL-COALESSCING CODE> OPLOCICE et rend excitant d'en savoir plus sur la nouvelle chose à propos de cet opérateur. Pouvez-vous donner des détails sur l'importance et les avantages de cet opérateur dans les situations où je peux être utilisé de la même manière avec des exemples simples et bons.
Si l'objet obj code> est
vide code> alors comment valider?
@ Tbohnen.jnr: Je n'ai toujours pas trouvé votre commentaire ou commentaires mises à jour et je ne me gère toujours pas si l'objet est vide code>?
Après la modification audacieuse dans ma réponse? Voulez-vous vérifier une chaîne vide?
Vous ne devriez pas être un peu surpris que vous obtenez un si vous avez écrit p> vous attendez un NullReferenceException code> avec ce code. La partie incriminée est
nullreferenceException code>. Étant donné que l'appel à
tostring code> se produit avant l'appel sur
string.isnullorempty code>, l'exception est lancée avant de vérifier une chaîne null ou vide. P> p>
Vous pouvez utiliser l'opérateur code>. Il est connu sous le nom de Opérateur NULL-COALESSE . P>
Très première fois, j'entends parler de NULL-COALESSCING CODE> OPLOCICE et rend excitant d'en savoir plus sur la nouvelle chose à propos de cet opérateur. Pouvez-vous donner des détails sur l'importance et les avantages de cet opérateur dans les situations où je peux être utilisé de la même manière avec des exemples simples et bons.
Si l'objet est vide code> alors comment valider?
Cela ressemble à ce que vous voulez faire est ceci:
object obj = null; double d; if (!double.TryParse(Convert.ToString(obj), out d)) { d = 0.0; }
Le problème que vous rencontrez est que votre objet est de type, de puits, d'objet. Afin de l'évaluer avec String.Isnullorempty, vous devez transmettre votre objet avec la distribution à (string)
comme: p> Cela fonctionnera bien depuis que vous n'appellent pas explicitement .tostrer sur votre objet (inexistant). p> p>
En supposant que obj code> est généré par un processus plus complexe que celui de la définition simplement sur
null code>, la distribution échouerait dans le cas où ce processus produit un véritable objet qui n'est pas un chaîne de caractères.
CORRECT, cela suppose que l'objet dans ce cas soit nul ou quelque chose qui peut être converti en une chaîne.
Techniquement, cela suppose que l'objet puisse être jeté à la chaîne, pas seulement converti. Cela a échoué pour moi quand Obj était en fait un int, avec int.Tostring () travaillant, mais (string) Int défaillance. C'est dommage; J'essayais d'éviter le ToString supplémentaire ().
class Program { static void Main(string[] args) { object obj = DBNull.Value; if(obj != DBNull.Value) { double d = Convert.ToDouble(obj); Console.WriteLine(d.ToString()); } } }
Le code suivant pourrait être un moyen plus sûr de l'atteindre.
if(obj != null && !string.IsNullOrEmpty(obj.ToString())) { }
D'où vient le bien .value code>?
Mon mauvais..bledated it..cheers mate!
BTW, l'OP a demandé sans convertir en .tostring () code>.
Vous ne pouvez pas convertir un objet nul en chaîne, donc l'erreur. Quel est le problème avec juste vérifier si (obj! = Null)?
Pourquoi voudriez-vous appeler
tostring () code> sur un objet que vous connaissez est
null code>, et génère donc
nullreferenceException code>?
Il n'existe pas d'objet vide (bien que la chaîne vide est une chose une chose comme la chaîne vide).
Je pense que cela pourrait simplement être un exemple de code pour montrer le problème ...
En ce qui concerne votre édition, que pensez-vous qu'un objet vide représente?
@phoog le vide dans isnullorempty, fait référence à une chaîne qui n'a aucun caractère dedans. Il a une longueur de 0.
(Désolé, je ne peux pas modifier les commentaires sur mon téléphone pour une raison quelconque) ou une meilleure question: pourquoi i> voulez-vous vérifier si l'objet est null ou vide?
@Stefanh je sais que, mais il parle d'un objet, pas une chaîne.
@phoog qui serait parce qu'une chaîne nulle ou vide ne peut pas être gérée par convert.todouble.
Comment vérifier si l'objet
code> est vide ??