Wil*_*ill 6 .net powershell equality
Powershell中的"-eq"是否测试引用相等(如c#中的"==")或它是否相当于调用Object.Equals()
对平等的考验并非如此简单.
考虑'a' -eq 'A'返回true.这意味着PowerShell做的不仅仅是调用Equals.
进一步为您的对象Equals按预期调用.
Add-Type -TypeDefinition @"
using System;
public class X {
public string Property;
public X(string s) {
Property = s;
}
public override bool Equals(object o) {
System.Console.WriteLine("equals on {0}", Property);
return Property == ((X)o).Property;
}
public override int GetHashCode() { return 20; }
}
"@
$o1 = New-Object X 'a'
$o2 = New-Object X 'A'
$o1 -eq $o2
Run Code Online (Sandbox Code Playgroud)
除了PowerShell使用转换非常重要.因此,如果操作数的类型不同,则右操作数将转换为左操作数的类型.这就是'1' -eq 1成功的原因.
| 归档时间: |
|
| 查看次数: |
975 次 |
| 最近记录: |