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.

28
demandé sur marc_s 2015-02-17 17:47:47

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
43
répondu arco444 2016-07-28 08:31:37

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)

16
répondu dotnetom 2015-02-17 14:56:35