哈希表中的通用列表

时间:2017-09-08 11:03:51

标签: powershell

我可以将数组定义为像这样的通用列表

$array = [Collections.Generic.List[String]]@()

我可以将哈希表中的元素定义为像这样的数组

$hash = @{
   array = @()
}

但我无法将哈希表中的元素定义为通用列表,如此

$hash = @{
   array = [Collections.Generic.List[String]]@()
}

相反,我收到此错误

  

无法转换“System.Object []”类型的“System.Object []”值   输入“System.Collections.Generic.List`1 [System.String]

我一直在使用通用列表来避免定期添加到标准数组时(在我的情况下很小,确定)性能问题。但这是我第一次需要创建一个包含通用列表的哈希表(对于复杂的返回值)。 那么,第一个问题,这甚至是可能的吗?第二个问题,简单地设置变量和哈希表元素之间的区别是什么?

编辑:这很有趣。我可以用

[System.Collections.ArrayList]@()

它有效。所以,现在我很好奇究竟是什么区别

[System.Collections.ArrayList]

[Collections.Generic.List[String]]

我想这是自学成才的缺点。我在BLOG上找到了[Collections.Generic.List [String]]的引用,也许[System.Collections.ArrayList]是一个更好的答案?我认为我从this理解的是前者是特定类型的字符串列表,而后者是通用对象列表,然后必须使用它们,这有潜在的错误和性能问题。不过,我想知道为什么键入的泛型不能在哈希表中工作。

0 个答案:

没有答案