摘要:[C#] 型別檢查
實值型別
資料型別的物件是由物件的實際值來表示。
如果將實值型別的執行個體指派給變數,該變數會取得這個值的全新複本。
參考型別
資料型別的物件是由物件之實際值的參考 (類似於指標) 來表示。
如果將參考型別指派給變數,該變數就會參考 (指向) 原始值。 不會進行複製。
Object.Equals
「參照物件位址相同」且「值相同」為 True,否則為 False
==
實際型別 (Value Type), 運算元相等時傳回 True
參考型別 (Reference Type), 指到同一個物件為 True,否則為 False ※ String 例外
String.Equals(Object)
覆寫 Object.Equals,先利用 object.ReferenceEquals 判斷位置
位置相同 → True
位置不同 → EqualsHelper 檢查內容值
值相同 → True
值不同 → False
String.Equals(String)
與 String.Equals(Object) 類似
型別檢查方法
1. type.IsAssignableFrom(type)
2. is
3. as
總結
使用 「int」、「string」 不論使用 == 或 Equals 都會比較值 !
子型別 → 父型別 (O)
父型別 → 子型別 (X)
參考資料: