匿名方法的工作原理
遇到“匿名”委托時,C# 編譯器會自動將其執行范圍內的代碼轉換為唯一命名類中的唯一命名函數。然後將設置存儲代碼塊的委托,以引用編譯器生成的對象和方法。調用委托時,將通過編譯器生成的方法執行“匿名”方法塊。
局部類型
盡管在單個文件中維護類型的所有源代碼是面向對象編程的好方法,但有時性能約束會使得類型變大。此外,在某些情況下將類型分割成子類型所耗費的開銷是無法讓人接受的。而且,程序員經常會創建或使用應用程序來發布源代碼和修改結果代碼。遺憾的是,當再次發布源代碼時,所有現有的源代碼修改將被覆蓋。
局部類型允許您將包含大量源代碼的類型分割成多個不同的源文件,以便於開發和維護。此外,局部類型可用於將計算機生成的類型部分與用戶編寫的類型部分分隔開,從而更易於補充或修改工具生成的代碼。
在以下示例中,兩個 C# 代碼文件 File1.cs 和 File2.cs 中都定義了名為 Foo 的類。如果不使用局部類型,將會出現編譯錯誤,因為這兩個類存在於同一個命名空間中。使用 partial 關鍵字,可以指示編譯器:別處可能包含此類的其他定義。
File1.cs File2.cs
public partial class Foo
{
public void MyFunction()
{
// 在此處執行操作
}
}
public partial class Foo
{
public void MyOtherFunction()
{
// 在此處執行操作
}
}
編譯時,C# 編譯器將收集局部類型的所有定義並將它們組合在一起。編譯器生成的結果 IL 顯示了組合而成的單個類,而不是將多個類分別作為單獨的類進行連續顯示。
符合標准
2001 年 12 月,歐洲計算機制造商協會 (ECMA) 將 C# 編程語言批准為一項標准 (ECMA 334)。此後不久,C# 標准便得到國際標准化組織 (ISO) 的快速跟蹤處理,預計很快就會得到批准。C# 標准的創建是新編程語言發展史中的重要裡程碑,它預示著未來有望在各種操作系統平台上編寫多種實現。實際上,我們從其簡短的歷史中可以看到,許多第三方編譯器供應商和研究人員已經將它當作標准來實現並創建了自己的 C# 編譯器版本。
Microsoft 歡迎客戶對在 C# 語言中添加上面提到的功能提供反饋意見,並打算將這些功能提交給正在進行的語言標准化進程。
可用性
下面介紹的功能將在 C# 編譯器的未來版本中實現。2003 年年初,Visual Studio .Net 的“Everett”版本將包含為完全符合 ECMA 標准而略作修改的 C# 版本。此版本不包含本文介紹的功能。Microsoft 打算在 Visual Studio 的“VS for Yukon”版本中包含這些功能,但具體的發布日期還未確定。
在接下來的幾個月中,Microsoft 將發布有關這些功能的詳細信息,包括所有規范。歡迎廣大程序員和語言設計團體就這些功能以及任何其他感興趣的語言功能提出自己的看法和反饋。您可以將電子郵件發送到 mailto:[email protected],與 C# 語言設計人員取得聯系。