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

PowerShell空数组$NameExample=@()转C#数组声明及脚本转换咨询

PowerShell空数组转C#的声明确认

问题背景

我正在将一段PowerShell脚本转换为C#程序,遇到一处疑问:脚本中用$NameExample = @()声明空数组,我认为对应C#的空数组写法是decimal[] NameExample = new decimal[] {},想确认是否正确。相关PowerShell代码如下:

$counter = 0
$UnitAvgerage = 20

$NameExample=@()
$NameExample2=@()

while ($counter -lt $NameExample.Count) 
{
    $NameExample2 += $NameExample[$counter..($counter+$UnitAvg -1)] | measure-object -average
    $counter += $NameExample2
}

解答

  • 你对空数组声明的理解是正确的:PowerShell里@()创建的空数组,对应C#中同类型的空数组声明就是decimal[] NameExample = new decimal[] {},也可以简化写成decimal[] NameExample = Array.Empty<decimal>(),两者效果完全一致。
  • 注意脚本中的+=操作:PowerShell里对数组使用+=时,本质是创建新数组并复制原元素,性能开销较高。如果你的C#代码需要频繁添加元素,更推荐用List<decimal>模拟这种动态行为,空列表声明写法为List<decimal> NameExample = new List<decimal>(),后续用Add()或AddRange()添加元素,比数组更高效。
  • 另外脚本里的$counter += $NameExample2存在逻辑错误(数组无法直接与整数相加),转换时需要先理清PowerShell代码的实际业务意图,再对应实现C#的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 04:15:19