尝试使用本机Powershell方式将空值分配给无法解析的变量。我的理解是,如果我设置Set-StrictMode -Off
,我将可以执行以下操作,但失败。有没有一种方法可以告诉Powershell引擎,万一抛出异常,只需将$null
赋给结果,而没有if
语句就不会显示任何异常
PS C:\Users\a> $item = $string.NonExistentmember.Split("/")
You cannot call a method on a null-valued expression.
At line:1 char:1
+ $item = $string.NonExistentmember.Split("/")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
答案 0 :(得分:3)
这与严格模式(无论如何默认情况下都处于关闭状态)无关。您正在寻找C#'s null conditional operator ?.
之类的东西,它将使您可以
$string?.NonExistentmember?.Split("/")
(如果不幸的话)在PowerShell中存在。
(不过,其介绍已在this GitHub issue中进行了讨论。)
您可以使用注释中建议的拆分运算符(如Ansgars):
$string.NonExistentmember -split "/"
但是请注意,它们的工作原理并不完全相同(运算符使用正则表达式,方法使用char
s)。