You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中如何声明大小由变量决定的二维(2D)数组?

PowerShell 动态声明变量大小二维(交错)数组方法

你需要的类似C语言arrayName[][]形式的数组,在PowerShell中属于交错数组(即元素为数组的数组)。你原有代码第一行$grid[$args[1]][$args[2]]不是合法的数组声明语句,只是对未初始化变量的取值表达式,直接运行会触发空值错误。

核心实现逻辑

  • 命令行传入的$args参数默认是字符串类型,作为数组长度、索引使用前必须显式转为整数;注意$args索引从0开始计数,脚本接收的第一个传入参数对应$args[0]
  • 先初始化指定行数的外层数组,再逐行为每一行初始化对应列数的内层数组。禁止用@(@()) * $rowCount这类乘法写法批量生成内层数组,会导致所有行引用同一个数组对象,修改单行元素时所有行的对应位置都会被篡改。

修正后的可运行测试代码

# 读取传入参数转整数,保留你原代码使用的$args[1]、$args[2]索引
$rowCount = [int]$args[1]
$colCount = [int]$args[2]

# 初始化外层数组,长度为指定行数
$grid = New-Object object[][] $rowCount

$r = 0
$c = 0
$count = 0

# 逐行初始化内层数组并赋值测试
for($r = 0; $r -lt $rowCount; $r++)
{
    $grid[$r] = New-Object object[] $colCount
    for($c = 0; $c -lt $colCount; $c++)
    {
        $grid[$r][$c] = $count
        $count++
    }
}

# 遍历打印结果
Write-Output "first line: "
for($r = 0; $r -lt $rowCount; $r++)
{
    for($c = 0; $c -lt $colCount; $c++)
    {
        Write-Output $grid[$r][$c]
        Write-Output " "
    }
    Write-Output "line done`nnext line: "
}

可选:矩形二维数组写法

如果你不需要每行长度可以不同的交错数组,只是要固定行列的规则二维数组,可以直接用.NET强类型二维数组(对应C#的[,]形式),初始化更简单:

# 初始化rowCount行、colCount列的整数类型二维数组
$grid = New-Object int[,] $rowCount, $colCount
# 赋值时索引用逗号分隔:$grid[$r,$c] = $count

内容的提问来源于stack exchange,提问作者SuperDialga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 19:57:11