我正在尝试在 PowerShell 中编写一个简单的结构数组。
Add-Type -TypeDefinition @"
public struct AppInfo
{
public string PN;
public string Description;
public int CRC;
}
"@
$data = New-Object AppInfo[] 4
但是然后像这样更新任何字段:
$data[0].CRC = 42
仍将保留原始值。我发现如何真正更改数组中的值的唯一方法是创建一个新的
AppInfo
对象并将其复制到适当的元素中。
是否有一些正确的 PowerShell 语法可以让我修改就地?
这在 结构类型(C# 参考)文档中得到了澄清,特别是在 结构初始化和默认值中,我们可以阅读以下内容:
结构体的所有成员字段在创建时都必须“明确分配”,因为结构体类型直接存储其数据。结构体的
default
值已明确指定所有字段为 0。调用构造函数时,必须明确指定所有字段。您可以使用以下机制初始化字段: 您可以将字段初始值设定项
因此,为了回答您的问题,在 PowerShell 中,如果您想为结构体分配一个值,您可以使用哈希表初始化语法,对于无参数结构体,您可以在索引- 添加到任何字段或自动实现的属性。 您可以在构造函数主体中初始化任何字段或自动属性。
CRC = 42
处使用
0
分配一个新实例:$data = [AppInfo[]]::new(4)
$data[0] = [AppInfo]@{ CRC = 42 }
# PN Description CRC
# -- ----------- ---
# 42
# 0
# 0
# 0