舊版需大量 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");
object 自動對應 dynamic,免強制轉型。range[1,2])。ref 參數時可省略 ref 關鍵字。PIA (Primary Interop Assemblies) 體積龐大。C# 4.0 編譯器分析程式碼實際使用的 COM API,僅將這些類型資訊嵌入自身組件,部署更輕量。
C# 中泛型預設為不變:
IList strings = new List();
IList
若允許上述轉換,後續 objects[0] = 5; 會導致 strings[0] 讀取到 int,破壞型別安全。
C# 4.0 透過 out (協變) 與 in (逆變) 在介面/委派層級開放安全的轉換路徑。