【发布时间】:2018-08-16 08:30:15
【问题描述】:
方法 ToArray() 在 .NET Framework 参考中列出,但我无法在 Powershell 中访问它。为什么?有替代品吗?
编辑:
现在我意识到这是因为我尝试使用 += 向列表中添加一个值,就好像它是一个数组一样。我想知道为什么它不起作用(感谢帮助)。
$test=New-Object -TypeName System.Collections.Generic.List[byte]
$test.Add(1)
$test.Add(2)
$test+=3
# NO $test.ToArray() METHOD (BECUASE OF $test+=3)`
【问题讨论】:
-
也许您可以添加您尝试过的代码示例以及失败原因的简要说明
-
@MathiasR.Jessen - 考虑到 OP 的标题是关于泛型的,我认为问题是指(静态)扩展 Enumerable.ToArray<TSource> 方法,该方法不可用,as you pointed out in the comments here。
-
@kuujinbo Extension methods 无法解决,但正如 OP 所暗示的,
ToArray()是作为List<T>类型定义本身的一部分实现的 -
"7.7.3 数组连接:当左操作数指定一个数组时,二元 + 运算符创建一个新的无约束一维数组,其中包含左操作数指定的元素,后跟值(s) 由右操作数指定。" - Windows PowerShell 语言规范版本 3.0.docx。因为当您使用
+=时,结果的类型从[List[T]]更改为[array] -
啊,有一个未解决的问题:github.com/PowerShell/PowerShell/issues/5805
标签: powershell