Créer un tableau, hashtable et dictionnaire?
Quelle est la bonne façon de créer un tableau, une table de hachage et un dictionnaire?
$array = [System.Collections.ArrayList]@()
$array.GetType()
retourne ArrayList, OK.
$hashtable = [System.Collections.Hashtable]
$hashtable.GetType()
retourne RuntimeType, pas OK.
$dictionary = ?
Comment créer un dictionnaire en utilisant cette méthode. net?
Quelle est la différence entre dictionary et hashtable? Je ne sais pas quand je devrais en utiliser un.
2 réponses
La manièrecorrecte (c'est-à-dire la manière PowerShell) est:
Tableau:
> $a = @()
> $a.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
Table De Hachage / Dictionnaire:
> $h = @{}
> $h.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Hashtable System.Object
Ce qui précède devrait suffire pour la plupart des scénarios de type dictionnaire, mais si vous voulez explicitement le type de Systems.Collections.Generic
, vous pouvez initialiser comme:
> $d = New-Object 'system.collections.generic.dictionary[string,string]'
> $d.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Dictionary`2 System.Object
> $d["foo"] = "bar"
> $d | Format-Table -auto
Key Value
--- -----
foo bar
Si vous voulez initialiser un tableau, vous pouvez utiliser le code suivant:
$array = @() # empty array
$array2 = @('one', 'two', 'three') # array with 3 values
Si vous souhaitez initialiser hashtable, utilisez le code suivant:
$hashtable = @{} # empty hashtable
$hashtable2 = @{One='one'; Two='two';Three='three'} # hashtable with 3 values
Hashtable et dictionnaire dans Powershell est à peu près le même, donc je suggère d'utiliser hashtable dans presque tous les cas (sauf si vous avez besoin de faire quelque chose dans. NET où le dictionnaire est requis)