gpt4 book ai didi

powershell - PowerShell类重载string []视为字符串

转载 作者:行者123 更新时间:2023-12-02 23:07:47 24 4
gpt4 key购买 nike

我有一个带有重载的构造函数的类:

MyClass([string] foo) { Write-Host "1" }

MyClass([string[]] bar) { Write-Host "2" }

当我运行以下命令时:
[MyClass]::new(@("my value"))

Id预期输出为“2”。相反,我得到“1”。我想念什么?

最佳答案

这是因为您没有传递字符串数组。您正在传递对象数组。由于未明确定义对象数组,因此它尝试使用第一个构造函数对其进行解释。

使用:

class MyClass{
MyClass([string] $foo) { Write-Host "1 $foo" }
MyClass([string[]] $bar) { Write-Host "2 $($bar)" }
}

例如。:
PS C:\> $myValue = @("myvalue")
PS C:\> $myValue.GetType()

IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array

PS C:\> [MyClass]::new($myValue)
1 myvalue

如果将其显式定义为字符串数组,则它将按预期工作:
PS C:\> [string[]] $strArr = @("strarr")
PS C:\> $strArr.GetType()

IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String[] System.Array


PS C:\> [MyClass]::new($strArr)
2 strarr

关于powershell - PowerShell类重载string []视为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55973879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com