Compte tenu de ce code PowerShell:
$drivers = New-Object 'System.Collections.Generic.Dictionary[String,String]'
$drivers.Add("nitrous","vx")
$drivers.Add("directx","vd")
$drivers.Add("openGL","vo")
Est-il possible d'initialiser ce dictionnaire directement sans avoir à appeler la méthode Add. Comme .NET vous permet de faire?
Quelque chose comme ça?
$foo = New-Object 'System.Collections.Generic.Dictionary[String,String]'{{"a","Alley"},{"b" "bat"}}
[Je ne sais pas quel type de syntaxe cela impliquerait]
Non. La syntaxe d'initialisation pour Dictionary<TKey,TValue>
Est un bonbon de syntaxe C #. Powershell a sa propre prise en charge de la syntaxe d'initialisation pour System.Collections.HashTable
(@{}
):
$drivers = @{"nitrous"="vx"; "directx"="vd"; "openGL"="vo"};
Pour [probablement] presque tous les cas, cela fonctionnera aussi bien que Dictionary<TKey,TValue>
. Si vous avez vraiment besoin de Dictionary<TKey,TValue>
Pour une raison quelconque, vous pouvez créer une fonction qui prend un HashTable
et parcourt les clés et les valeurs pour les ajouter à un nouveau Dictionary<TKey,TValue>
.
La syntaxe d'initialisation C # n'est pas exactement "directe" de toute façon. Le compilateur génère des appels à Add()
à partir de celui-ci.