如何在PowerShell中定义自定义类的数组并添加数据?
PowerShell中定义MyClass类型数组并添加数据的方法
针对你的需求,这里提供两种定义MyClass类型数组并添加数据的可行方案,同时修正你示例循环中的写法问题:
方案一:固定大小的强类型数组
如果你提前知道需要存储的元素数量,可以直接初始化一个固定大小的MyClass类型数组:
# 根据$SomeObjects的数量初始化对应大小的MyClass数组 [MyClass[]]$MyArray = New-Object MyClass[] $SomeObjects.Count for ($i = 0; $i -lt $SomeObjects.Count; $i++) { # 从$SomeObjects中提取需要的字段值(示例,根据实际情况修改) $field1 = $SomeObjects[$i].对应属性名1 $field2 = $SomeObjects[$i].对应属性名2 # 实例化MyClass对象并赋值到数组的指定索引位置 $MyArray[$i] = [MyClass]::new($field1, $field2) }
方案二:泛型列表(动态添加更灵活)
如果不确定元素数量,推荐使用泛型列表来动态添加元素,之后可按需转换为数组:
# 初始化一个存储MyClass类型的泛型列表 $myList = [System.Collections.Generic.List[MyClass]]::new() foreach ($item in $SomeObjects) { $field1 = $item.对应属性名1 $field2 = $item.对应属性名2 # 创建MyClass实例并添加到列表中 $myList.Add([MyClass]::new($field1, $field2)) } # 若需要将列表转为数组,执行以下语句 [MyClass[]]$MyArray = $myList.ToArray()
关于你示例循环的修正说明
你原代码中$MyArray[$i]($Field1, $Field2)的写法有误,此时数组索引位置的元素尚未实例化,无法直接这样调用。正确的做法是通过[MyClass]::new()创建对象实例,再赋值给数组对应位置。
内容的提问来源于stack exchange,提问作者Wyatt Wong
相关产品推荐
相关产品推荐

