如何在单行实例化和初始化变量

时间:2016-12-19 22:27:39

标签: powershell

如何在单行下面做? 执行行后, $ b的值为空

 $b = ([System.Collections.Generic.Dictionary[string,object]]::new()).Add("dd",$null)

[System.Collections.Generic.Dictionary[string,object]]::new()).Add("dd",$null) -eq $null
True

2 个答案:

答案 0 :(得分:3)

($b = [System.Collections.Generic.Dictionary[string,object]]::new()).Add("dd",$null)

答案 1 :(得分:0)

尝试hash tables而不是.NET词典。这些是存储键值对的System.Collections.Hashtable个对象。在PowerShell中,您可以使用运算符@{}来创建哈希表,并且可以在一行上快速初始化一个具有多个值的哈希表。

使用哈希表可以有效地获得与字典相同的行为,除了一些性能差异,更明显的是 - 缺乏对值的强类型。

简单演示:

PS C:> @{ "dd" = $null }

Name                           Value
----                           -----
dd

要在一行中从哈希表转换为PowerShell中的字典:

$dictionary = New-Object 'System.Collections.Generic.Dictionary[String,object]'; (@{ "dd" = $null }).Keys | % { $dictionary.Add($_, $hashtable.Item($_)) }