[C#] 型別檢查

摘要:[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)
 
 
 
參考資料: