Question Tester si un objet est null
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6294
- Remerciements reçus 67
il y a 14 ans 8 mois #3693
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Tester si un objet est null
Salut,
je me permet une remarque :
janel écrit:
Un objet est soit, après sa création, une instance de classe soit n'existe pas.
Une variable peut référencer un objet ou pas et dans ce cas elle contient $null (voir Clear-Variable).
Sous dotNET cette indirection est masquée, c'est une manière de parler, et sous PS elle est dévoilée avec le type [REF] :
[code:1]
[ref]$R=$null
$R
#Value
#
$R -eq $null
#False
$R.value -eq $null
#True
$R=10
$R
#Value
#
#10
$R.Value
#10
$R -eq $null
#False
$R.value -eq $null
#False
[/code:1]
On a donc besoin de 2 tests pour vérifier :
- qu'une variable pointe sur un objet
- et que le contenu de cet objet à bien la valeur attendue (d'après les specs).
janel écrit:
je me permet une remarque :
janel écrit:
je suis d'accord sur le fond mais sur la forme un débutant peut comprendre que $null est une valeur affectée à un objet, c'est la référence de l'objet qui est à $null pas l'objet.Si ça ne marche toujours pas, il est possible que get-tfs ait attribué un objet à $tfs même si son contenu est vide,
ce qui est vu par PowerShell comme autre chose que $null.
Un objet est soit, après sa création, une instance de classe soit n'existe pas.
Une variable peut référencer un objet ou pas et dans ce cas elle contient $null (voir Clear-Variable).
Sous dotNET cette indirection est masquée, c'est une manière de parler, et sous PS elle est dévoilée avec le type [REF] :
[code:1]
[ref]$R=$null
$R
#Value
#
$R -eq $null
#False
$R.value -eq $null
#True
$R=10
$R
#Value
#
#10
$R.Value
#10
$R -eq $null
#False
$R.value -eq $null
#False
[/code:1]
On a donc besoin de 2 tests pour vérifier :
- qu'une variable pointe sur un objet
- et que le contenu de cet objet à bien la valeur attendue (d'après les specs).
janel écrit:
Pour moi le test $tfs -eq $null fonctionnera tjrs, j'aurais plutot dit \"si ce test n'est pas suffisant par rapport à ton besoin\".Si ça ne marche toujours pas,
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 14 ans 8 mois #3694
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Tester si un objet est null
Merci pour la précision, tout à fait juste sur le fond comme sur la forme.
Pour ce qui est de la formulation de mon \"si ça ne marche pas\", j'ai en effet une approche très opérationnelle des choses: un script marche s'il produit le résultat escompté, il ne marche pas s'il ne produit pas le résultat escompté. En l'occurrence, si l'auteur s'attend à ce que \"$tfs -eq $null\" lui retourne $true quand $tfs est censé ne rien contenir, et que l'expression lui retourne $false, alors ça ne marche pas. Quelle que soit la raison de cette divergence entre résultat attendu et résultat obtenu. D'où ma recherche d'une solution \"qui marche\".
Mais tout ça n'est que question de forme. Nous sommes fondamentalement d'accord.
Janel
Pour ce qui est de la formulation de mon \"si ça ne marche pas\", j'ai en effet une approche très opérationnelle des choses: un script marche s'il produit le résultat escompté, il ne marche pas s'il ne produit pas le résultat escompté. En l'occurrence, si l'auteur s'attend à ce que \"$tfs -eq $null\" lui retourne $true quand $tfs est censé ne rien contenir, et que l'expression lui retourne $false, alors ça ne marche pas. Quelle que soit la raison de cette divergence entre résultat attendu et résultat obtenu. D'où ma recherche d'une solution \"qui marche\".
Mais tout ça n'est que question de forme. Nous sommes fondamentalement d'accord.

Janel
Connexion ou Créer un compte pour participer à la conversation.
- steph_d
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 65
- Remerciements reçus 0
il y a 11 ans 6 mois #11291
par steph_d
@+ Steph
Réponse de steph_d sur le sujet Re:Tester si un objet est null
Et un gros coup de pelleteuse pour déterrer ce post.
Bonjour tout le monde
Dans le même genre, voilà ma bidouille. Je veux savoir si une ligne existe dans un fichier CSV selon 2 colonnes: ($ligne est renseigné comme il faut)
[code:1]$reliqExistant = import-csv .\ReliquatsDuJour.csv | Where-Object {$_.NOBON -eq $ligne.NOBON -and $_.NOLIG -eq $ligne.NOBON}[/code:1]
Comment savoir si on a quelque chose en retour ?
En testant
[code:1]$reliqExistant -eq $null[/code:1]
si il trouve une ligne j'ai pas de retour sur ce test !!! (j'ai pas False) par contre si il trouve rien le test me retourne bien True (normal).
Je dois faire le test [code:1]$reliqExistant.length -eq $null[/code:1] pour que le test retourne True/False à chaque fois. C'est capillotracté non ?
Stephane
Bonjour tout le monde
Dans le même genre, voilà ma bidouille. Je veux savoir si une ligne existe dans un fichier CSV selon 2 colonnes: ($ligne est renseigné comme il faut)
[code:1]$reliqExistant = import-csv .\ReliquatsDuJour.csv | Where-Object {$_.NOBON -eq $ligne.NOBON -and $_.NOLIG -eq $ligne.NOBON}[/code:1]
Comment savoir si on a quelque chose en retour ?
En testant
[code:1]$reliqExistant -eq $null[/code:1]
si il trouve une ligne j'ai pas de retour sur ce test !!! (j'ai pas False) par contre si il trouve rien le test me retourne bien True (normal).
Je dois faire le test [code:1]$reliqExistant.length -eq $null[/code:1] pour que le test retourne True/False à chaque fois. C'est capillotracté non ?
Stephane
@+ Steph
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6294
- Remerciements reçus 67
il y a 11 ans 6 mois #11305
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Tester si un objet est null
Avec un jeux de test, ce serait beaucoup plus mieux.

Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- steph_d
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 65
- Remerciements reçus 0
il y a 11 ans 6 mois #11381
par steph_d
@+ Steph
Réponse de steph_d sur le sujet Re:Tester si un objet est null
Hello
Alors comment dire... ben en fait c'était un peu une connerie qu'est-ce que j'ai dit mais je m'en suis rendu compte plus tard...
Désolé
Stephane
Alors comment dire... ben en fait c'était un peu une connerie qu'est-ce que j'ai dit mais je m'en suis rendu compte plus tard...
Désolé

Stephane
@+ Steph
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.052 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les initiés
- Tester si un objet est null