Create an array, hashtable and dictionary?
powershell
Solution
The proper way (i.e. the PowerShell way) is:
Array:
> $a = @()
> $a.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
Hashtable / Dictionary:
> $h = @{}
> $h.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Hashtable System.Object
The above should suffice for most dictionary-like scenarios, but if you did explicitly want the type from `Systems.Collections.Generic`, you could initialise like:
> $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
Problem
What is the proper way to create an array, hashtable and dictionary? ``` $array = [System.Collections.ArrayList]@() ``` `$array.GetType()` returns ArrayList, OK. ``` $hashtable = [System.Collections.Hashtable] ``` `$hashtable.GetType()` returns RuntimeType, Not OK. ``` $dictionary = ? ``` How to create a dictionary using this .NET way? What is the difference between dictionary and hashtable? I am not sure when I should use one of them.