【问题标题】:How to dim an empty array of a specific length如何使特定长度的空数组变暗
【发布时间】:2014-07-24 11:53:22
【问题描述】:

我需要将一个包含 10 个项目的集合复制到一个数组中,以便对它进行索引。所以我需要使用CopyTo 方法并指定一个足够大的目标数组来容纳集合。

所以在调用CopyTo 之前,我需要调暗一个特定大小的空数组。我似乎找不到执行此操作的正确 PowerShell 语法。

这对我不起作用:

$snapshot = New-Object System.Array 10;

New-Object:未找到构造函数。找不到适合 System.Array 类型的构造函数。

编辑

已经解决了这个问题:

$snapshot = New-Object System.Collections.ArrayList;
$snapshot.AddRange($slider);  

【问题讨论】:

标签: arrays powershell


【解决方案1】:

我认为这应该可以解决问题:

$snapshot = @()

编辑:
好的,对此感到抱歉。 测试了这个:

> $snapshot  = New-Object object[] 10
> $snapshot.Length 
10

【讨论】:

  • 遗憾的是没有。它的大小为 0。
【解决方案2】:

我认为只需创建一个新数组就可以在 Powershell 中实现这一点。

# A "collection of ten items"
$collection = @(1,2,3,4,5,6,7,8,9,0)

#This command creates a new array, sizes it, and copies data into the new array
$newCollection = $collection

Powershell 在这种情况下会创建一个新数组。无需指定数组的大小; Powershell 会自动调整大小。如果您向数组中添加一个元素,Powershell 将处理您在低级语言中必须执行的繁琐的 initializeNew-copy-deleteOld 例程。

请注意,$newCollection 不是对 $collection 引用的同一数组的引用。它是对一个全新数组的引用。修改 $collection 不会影响 $newCollection,反之亦然。

【讨论】:

  • 不幸的是,这不能满足我的需求。我需要一个特定长度的空数组。我正在使用 .NET 库中的自定义集合类型,而不是纯粹操作 PS 数组。
猜你喜欢
  • 2017-12-21
  • 1970-01-01
  • 2019-03-19
  • 1970-01-01
  • 2017-03-07
  • 1970-01-01
  • 2016-09-10
  • 2023-03-12
  • 2017-07-21
相关资源
最近更新 更多