程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> c# 4.0新特性一覽(3)

c# 4.0新特性一覽(3)

編輯:關於C語言
C#中在調用COM對象如Office對象時,經常需要寫一堆不必要的參數:

object fileName = "Test.docx";
object missing = System.Reflection.Missing.Value;
doc.SaveAs(ref fileName,
ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing);

4.0中就可以直接寫成:

doc.SaveAs("Test.docx");

C#4.0對COM交互做了下面幾方面的改進:

Automatic object -> dynamic mapping

Optional and named parameters

Indexed propertIEs

Optional “ref” modifIEr

Interop type embedding (“No PIA”)

對第1點和第5點的簡單解釋如下:

在COM調用中,很多輸入輸出類型都是object,這樣就必須知道返回對象的確切類型,強制轉換後才可 以調用相應的方法。在4.0中有了dynamic的支持,就可以在導入這些COM接口時將變量定義為dynamic而不 是object,省掉了強制類型轉換。

PIA(Primary Interop AssemblIEs)是根據COM API生成的.Net Assembly,一般體積比較大。在4.0 中運行時不需要PIA的存在,編譯器會判斷你的程序具體使用了哪一部分COM API,只把這部分用PIA包裝 ,直接加入到你自己程序的Assembly裡面。

Co- and Contra-Variance

實在是不知道怎麼翻譯這兩個詞。

在C#中,下面的類型轉換是非法的:

IList<string> strings = new List<string>();
IList<object> objects = strings;

因為你有可能會這樣做,而編譯器的靜態檢查無法查出錯誤:

objects[0] = 5;
string s = strings[0];

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved