我可以将数组定义为像这样的通用列表
$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理解的是前者是特定类型的字符串列表,而后者是通用对象列表,然后必须使用它们,这有潜在的错误和性能问题。不过,我想知道为什么键入的泛型不能在哈希表中工作。