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

C# 4.0 新特性總覽(三):COM 互通改進與協變逆變基礎

     編輯:關於C語言

COM 互通呼叫簡化

舊版需大量 ref missing:


object fileName = "Test.docx";
object missing = System.Reflection.Missing.Value;
doc.SaveAs(ref fileName, ref missing, ref missing, ... 共 16 個參數);

C# 4.0 直接:


doc.SaveAs("Test.docx");

四大 COM 改進重點

  1. Automatic object → dynamic mapping:COM 回傳 object 自動對應 dynamic,免強制轉型。
  2. Optional and named parameters:配合可選/命名參數省略預設值參數。
  3. Indexed properties:支援索引屬性語法 (如 range[1,2])。
  4. Optional "ref" modifier:呼叫 COM ref 參數時可省略 ref 關鍵字。
  5. Interop type embedding (No PIA):編譯器僅嵌入實際使用的類型中繼資料,免部署龐大 PIA 組件。

No PIA 原理

PIA (Primary Interop Assemblies) 體積龐大。C# 4.0 編譯器分析程式碼實際使用的 COM API,僅將這些類型資訊嵌入自身組件,部署更輕量。

協變與逆變基礎

C# 中泛型預設為不變:


IList strings = new List();
IList objects = strings; // 編譯錯誤

若允許上述轉換,後續 objects[0] = 5; 會導致 strings[0] 讀取到 int,破壞型別安全。

C# 4.0 透過 out (協變) 與 in (逆變) 在介面/委派層級開放安全的轉換路徑。

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