创建一个数组,哈希表和字典?

exp*_*001 41 powershell

创建数组,哈希表和字典的正确方法是什么?

$array = [System.Collections.ArrayList]@()
Run Code Online (Sandbox Code Playgroud)

$array.GetType() 返回ArrayList,好的.

$hashtable = [System.Collections.Hashtable]
Run Code Online (Sandbox Code Playgroud)

$hashtable.GetType() 返回RuntimeType,不行.

$dictionary = ? 
Run Code Online (Sandbox Code Playgroud)

如何使用这种.NET方式创建字典?

字典和散列表有什么区别?我不确定何时应该使用其中一个.

arc*_*444 59

适当的方式(即PowerShell的方式)是:

阵:

> $a = @()
> $a.gettype()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array
Run Code Online (Sandbox Code Playgroud)

哈希表/字典:

> $h = @{}
> $h.gettype()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Hashtable                                System.Object
Run Code Online (Sandbox Code Playgroud)

对于大多数类似字典的场景,上面的内容应该足够了,但是如果你明确想要类型Systems.Collections.Generic,你可以初始化为:

> $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
Run Code Online (Sandbox Code Playgroud)


dot*_*tom 31

如果要初始化数组,可以使用以下代码:

$array = @()    # empty array
$array2 = @('one', 'two', 'three')   # array with 3 values
Run Code Online (Sandbox Code Playgroud)

如果要初始化哈希表,请使用以下代码:

$hashtable = @{}   # empty hashtable
$hashtable2 = @{One='one'; Two='two';Three='three'}   # hashtable with 3 values
Run Code Online (Sandbox Code Playgroud)

Powershell中的Hashtable和字典几乎相同,所以我建议在几乎所有情况下都使用哈希表(除非你需要在需要字典的.NET中做一些事情)

  • 它们并不完全相同,它们有一些显着差异。从基本可用性的角度来看,它们有一些重叠。 (3认同)