Question Tester si un objet est null

Plus d'informations
il y a 15 ans 3 mois #3693 par Laurent Dardenne
Salut,
je me permet une remarque :
janel écrit:

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.

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.
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:

Si ça ne marche toujours pas,

Pour moi le test $tfs -eq $null fonctionnera tjrs, j'aurais plutot dit \"si ce test n'est pas suffisant par rapport à ton besoin\".

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 3 mois #3694 par Jacques Barathon
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

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 1 mois #11291 par steph_d
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

@+ Steph

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 1 mois #11305 par Laurent Dardenne
Avec un jeux de test, ce serait beaucoup plus mieux.
:)

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 3 semaines #11381 par steph_d
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é :blush:

Stephane

@+ Steph

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.073 secondes
Propulsé par Kunena