程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Effective C#原則49:為C#2.0做好准備(4)

Effective C#原則49:為C#2.0做好准備(4)

編輯:關於C語言

在這一方面上,C#2.0用yIEld關鍵字添加了新 的語法,這讓在寫這些迭代時變得更清楚。對於前面的代碼,在C#2.0裡可是樣 的:

public class List
{
 public object iterate()
 {
  int i=0;
  while ( i < theList.Length ( ) )
   yIEld theList [ i++ ];
 }
 // Other methods removed.
}

yIEld語句讓你只用6行代 碼足足替換了近30行代碼。這就是說,BUG少了,開發時間也少了,以及少的代 碼維護也是件好事。

在內部,編譯器生成的MSIL與目前這30行代碼是一 致的。編譯器為你做了這些,所以你不用做 。編譯器生成的類實現了 IEnumerator 接口,而且添加了你要支持的接口到列表上。

最後一個新 功能就是部分類型。部分類型讓你要吧把一個C#類的實現分開到多個文件中。你 可能很少這樣做,如果有,你自己可以在日常的開發中,使用這一功能來創建多 源文件。MS假設這一修改是讓C#支持IDE以及代碼生成器。目前,你可以在你的 類中使用region來包含所以VS.Net為你生成的代碼。而將來(譯注:指C#2.0), 這些工具可以創建部份類而且取代這些代碼到分開的文件中。

使用這一 功能,你要為你的類的申明添加一個partial關鍵字:

public partial class Form1
{
 // Wizard Code:
 private void InitializeComponent()
 {
  // wizard code...
 }
}
// In another file:
public partial class Form1
{
 public void Method ()
 {
  // etc...
 }
}

部分類型有一些限制。類只與源相關的,不管是一個文件還是多 個源文件,它們所生成的MSIL代碼沒有什麼兩樣。你還是要編譯一個完整類的所 有的文件到同樣的程序集中,而且沒有什麼自動的方法來確保你已經添加了一個 完整類的所有源文件到你的編譯項目中。當你把一個類的定義從一文件分開到多 個文件時,你可能會以引發很多問題,所以建議你只用IDE生成部分類型功能。 這包含form,正如我前面介紹的那樣。VS.Net同樣為DataSet(參見原則41)也生 成部分類型,還有web服務代理,所以你可以添加你自己的成員到這些類中。

我沒有太多的談到關於C#2.0的功能,因為添加的與目前的編碼有一些沖 突。你可以使用它,通過范型讓你自己的類型變得簡單,而定義接口可以描述行 為:這些接口可以做為約束。新的迭代語法可以提供更高效的方法來實現枚舉。 你可以通過這一新語法,快速簡單的取代嵌套枚舉。然而,用戶擴展類可能不會 是簡單的取代。現在開發你自己的代碼,在顯而易見的地方利用這些功能,而且 在用C#2.0升級你已經存在的代碼時,它會變得更容易,工作量也會變得最少。

返回教程目錄

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