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

C# 隱式參考轉換詳解:繼承、介面、陣列與委派的型別相容性

     編輯:關於C#

隱式參考轉換的完整分類

隱式參考轉換發生在參考類型之間,且保證型別安全。主要包含以下類別:

1. 基礎繼承與介面實作

  • 任意參考類型 → object
  • 類別 S → 類別 T(其中 S 繼承自 T)
  • 類別 S → 介面 T(其中 S 實作 T)
  • 介面 S → 介面 T(其中 T 是 S 的父介面)

2. 陣列共變性

從元素類型為 TS 的陣列類型 S → 元素類型為 TT 的陣列類型 T,需滿足:

  • S 與 T 維度相同,僅元素類型不同
  • TS 與 TT 皆為參考類型
  • 存在從 TS 到 TT 的隱式參考轉換

3. 系統基底類型

  • 任意陣列類型 → System.Array
  • 任意委派類型 → System.Delegate
  • 任意陣列/委派類型 → System.ICloneable
  • null → 任意參考類型

程式範例:值類型陣列無隱式轉換

float[] float_arr = new float[10];
int[] int_arr = new int[10];
float_arr = int_arr; // 編譯錯誤:元素為值類型,無隱式參考轉換

程式範例:參考類型陣列的共變性

class Class1 {}
class Class2 : Class1 {}

Class1[] class1_arr = new Class1[10];
Class2[] class2_arr = new Class2[10];
class1_arr = class2_arr; // 合法:Class2 繼承 Class1,元素為參考類型

值類型在系統中的原型對照

float[]   → System.Single[]
double[]  → System.Double[]
sbyte[]   → System.SByte[]
byte[]    → System.Byte[]
ushort[]  → System.UInt16[]
int[]     → System.Int32[]
long[]    → System.Int64[]
string[]  → System.String[]

理解隱式參考轉換,是掌握 C# 多型與泛型協變/逆變的基石。

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