Powershell中的「-eq」測試引用是否相等(例如c#中的「==」)還是等同於調用Object.Equals ()Power-shell中的-eq關鍵字測試引用是否相等或使用Object.Equals()
5
A
回答
5
平等的測試並非如此簡單。
考慮到'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
除此之外,PowerShell使用轉換相當嚴重。因此,如果操作數不是同一類型,則右操作數將轉換爲左操作數的類型。 這就是爲什麼'1' -eq 1
成功。
3
運算符-eq不是(像c#中的「==」)和Object.Equals()。簡單的例子:它執行不區分大小寫的字符串比較。事實上,它在封面上進行了很多轉換,不幸的是,其中一些轉換可能並不總是直觀的預期。
下面是一些有趣的演示
# this is False
[ConsoleColor]::Black -eq $true
# this is True
$true -eq [ConsoleColor]::Black
相關問題
- 1. 使用Easy68K測試兩個數字是否相等
- 2. 測試對象是否相等和/或對象是否有更多按鍵,但仍等於共用的對象
- 3. 是否有可用於測試Unicode相關算法的測試?
- 4. 測試ActiveSupport :: TimeWithZone對象是否相等
- 5. 測試兩個對象是否相等
- 6. 單元測試引用關鍵段類
- 7. 在此命令中是否使用關鍵字「STDOUT」ruby-或cygwin?
- 8. 測試用例中的測試是否相互依賴?
- 9. 是否正確使用「this」關鍵字?
- 10. 測試相關模型是否存在
- 11. 是否有用PowerShell腳本測試PowerShell的單元測試框架?
- 12. Linq'等於'關鍵字Revisited - 它是否比較對象的值和引用?
- 13. 如何測試Scheme中引用符號的相等性?
- 14. ASP.Net MVC4測試版 - 不等待HttpClient中的關鍵字支持?
- 15. 如何使用closedxml測試兩個單元在excel中是否相等?
- 16. Java中是否有任何關鍵字與C#中的'AS'關鍵字相似?
- 17. 測試是否collections.Mapping等於其他地圖,或字典
- 18. 測試numpy數組中的所有值是否相等
- 19. MPLab中的inline關鍵字是否相關?
- 20. 關鍵字「if」如何測試值是否爲false?
- 21. 爲什麼在PowerShell中等於「-eq」而不僅僅是「=」?
- 22. 如何在xunit.net中測試兩個對象是否相等?
- 23. 如何測試python中兩個對象是否相等?
- 24. python否則如果和相等測試
- 25. 使用Smalltalk Seaside測試夾具或同等測試數據?
- 26. 爲Ruby字符串或符號測試字符串相等(不是對象相等)的最簡潔方法?
- 27. 在mercurial中是否有與svn:關鍵字等價的東西?
- 28. .Net是否使用設備相關或設備無關位圖?
- 29. Async是否等待關鍵字等同於ContinueWith lambda?
- 30. Javascript:是否有關鍵字用於引用對象中的當前節點?