Coalescence nulle dans PowerShell

ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

Coalescence nulle dans PowerShell

Message par ForumBot »

Coalescence nulle dans PowerShell

ayi
Site Admin
Messages : 13176
Inscription : mer. avr. 22, 2026 5:21 pm

Re: Coalescence nulle dans PowerShell

Message par ayi »

PowerShell 7+


PowerShell 7 introduit nativement les operateurs de coalescence nulle, d’affectation conditionnelle nulle et ternaire dans PowerShell.


Coalescence nulle


$null ?? 100    # Le resultat est 100

"Evaluated" ?? (Expensive-Operation "Not Evaluated") # Le cote droit ici n'est pas evalue


Affectation conditionnelle nulle


$x = $null
$x ??= 100 # $x vaut maintenant 100
$x ??= 200 # $x reste 100


Operateur ternaire


$true  ? "cette valeur est retournee" : "cette expression n'est pas evaluee"
$false ? "cette expression n'est pas evaluee" : "cette valeur est retournee"


Versions precedentes :


Pas besoin des PowerShell Community Extensions, vous pouvez utiliser les instructions if standard de PowerShell comme expression :


variable = if (condition) { expr1 } else { expr2 }


Donc les remplacements de votre premiere expression C# :


var s = myval ?? "new value";


deviennent l’un des suivants (selon la preference) :


$s = if ($myval -eq $null) { "new value" } else { $myval }
$s = if ($myval -ne $null) { $myval } else { "new value" }


ou selon ce que $myval pourrait contenir, vous pouvez utiliser :


$s = if ($myval) { $myval } else { "new value" }


et la seconde expression C# se transpose de maniere similaire :


var x = myval == null ? "" : otherval;


devient


$x = if ($myval -eq $null) { "" } else { $otherval }


Maintenant, pour etre honnete, ce n’est pas tres concis, et loin d’etre aussi confortable a utiliser que les formes C#.


Vous pourriez egalement envisager de l’encapsuler dans une fonction tres simple pour rendre les choses plus lisibles :


function Coalesce($a, $b) { if ($a -ne $null) { $a } else { $b } }

$s = Coalesce $myval "new value"


ou eventuellement sous la forme IfNull :


function IfNull($a, $b, $c) { if ($a -eq $null) { $b } else { $c } }

$s = IfNull $myval "new value" $myval
$x = IfNull $myval "" $otherval


Comme vous pouvez le voir, une tres


(Reponse tronquee)

Répondre

Revenir à « PowerShell »