首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 隱含參考轉換完整規則:繼承、介面、陣列協變與 Null 轉換

     編輯:關於C語言

隱含參考轉換 是編譯器在靜態型別系統層面判定安全、無需執行期檢查的參考型別轉換。核心原則:來源型別的執行期物件一定能作為目標型別使用。

八大類隱含參考轉換

  1. 任意參考型別 → object:根型別通吃。
  2. 衍生類別 → 基底類別:Derived d = new Derived(); Base b = d;
  3. 類別 → 實作的介面:IList<int> list = new List<int>();
  4. 介面 → 父介面:IEnumerable<int> e = list;(IList<T> : IEnumerable<T>)
  5. 陣列協變:Derived[] → Base[],條件:
    • 維度相同
    • 元素型別皆為參考型別
    • 元素型別間存在隱含參考轉換
  6. 任意陣列 → System.Array
  7. 任意委派 → System.Delegate
  8. 任意陣列/委派 → System.ICloneable
  9. null → 任意參考型別

陣列協變的經典陷阱


// ❌ 編譯錯誤:元素為實值型別,無協變
float[] fa = new float[10];
int[] ia = new int[10];
fa = ia; // CS0029

// ✅ 正確:元素為參考型別,支援協變
class Base {}
class Derived : Base {}
Base[] ba = new Derived[10]; // 隱含參考轉換

執行期型別原型驗證


float[]  → System.Single[]
double[] → System.Double[]
int[]    → System.Int32[]
string[] → System.String[]

這印證了 C# 基本型別對應的 CLI 型別名稱(int = System.Int32)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved