【发布时间】:2019-12-06 07:17:32
【问题描述】:
在一些 C# 代码中,当我将代码从 PowerShell 移动到 C# 时,我正在评估一些逻辑,并遇到了这些差异。
var a = false && false || true; // answer is true
var a = true || false && false; // answer is true
然而在 PowerShell 中,同样的逻辑:
$false -and $false -or $true # result is true
$true -or $false -and $false # result is false
在 c# 中,第二行对我来说确实是错误的。有没有解释,那怎么解释PowerShell的逻辑不一样呢?
【问题讨论】:
-
它们不是一回事。 [grin] powershell 代码评估第一个 2 项然后评估第三项的结果。如果你用括号使序列更明显,那就更清楚了>>>
($false -and $false) -or $true -
@Lee_Dailey,当然,当你使用括号时,一切都会更清楚......但既然你不应该这样做,当你和编译器都同意操作顺序时,我试图理解这种逻辑短路的操作顺序,我真的很困惑,像 PowerShell 这样的东西不会用它所写的语言来效仿。
-
根据本页>>> C# 操作符 - C# 参考 | Microsoft Docs — docs.microsoft.com/en-us/dotnet/csharp/language-reference/… && 的优先级高于
||。 PoSh 运营商没有这样的优先级。它们从左到右进行评估...
标签: c# powershell