C#一些基本知識

來源:互聯網
上載者:User
      今天下午在看C#3.0編碼規範,看到一些自己不明白比較模糊的代碼,特發上來珍藏,這些代碼有時候還是比較有用的.
  class @class {  public static void @static(bool @bool) {   if (@bool)    System.Console.WriteLine("true");   else    System.Console.WriteLine("false");  }  }

 @指你如果真的無法避免用C#關鍵字的話那就在關鍵字前面加上@,代碼編譯時間就不會報錯
 lock
{
}
unlock
{
}
 lock,unlock一般用在多線程中,用於鎖定和解鎖一個程式碼片段,防止兩個線程同時用一段代碼

check
{
}
uncheck
{
}
 check,uncheck用於檢查程式碼片段中的資料類型是否超出邊界,check檢查,uncheck不檢查,uncheck超出邊界時不發出異常,自動返回資料類型的最小值mixValue.

yield return C#中的列舉程式

使用C# 2.0 這些問題如同五月末的雪般融化了。在這個例子的2.0版本中,我重寫上面的列表,使用C# 2.0的兩個新特性:泛型 和 列舉程式。

我以重新定義實現IEumerable<string>的ListBox作為開始:

public class ListBox : IEnumerable<string>

這樣做確定這個類可以在foreach迴圈中使用,同時確保迭代的值是string類型。

現在,從上個例子中挪去整個嵌套類,並且用下面的代碼替換 GetEnumerator方法。

public IEnumerator<string> GetEnumerator()

{

   foreach (string s in strings)

   {

      yield return s;

   }

}

GetEnumerator方法使用了新的 yield 語句。yield語句返回一個運算式。yield語句僅在迭代塊中出現,並且返回foreach語句所期望的值。那也就是,對GetEnumerator的每次調用都將會產生集合中的下一個字串;所有的狀態管理已經都為你做好了!

就這樣了,你已經完成了。不需要為每個類型實現你自己的enumerator,不需要建立嵌套類。你已經移除了至少30行代碼,並且極大地簡化了你的代碼。程式繼續像期望的那樣運行,但是狀態管理不再是你的任務,所有的都為你做好了。更進一步,由列舉程式所返回的值一定是string類型,如果你想要返回其他類型,你可以修改IEnumerable泛型語句,IEnumerable泛型語句將反射新類型。

關於Yield的更多內容

作為對上面的一些旁註,很值得告訴你,實際上,你可以在yield語句塊中yield一個以上的值。這樣,下面的語句是完全正確的C#語句:

public IEnumerator GetEnumerator()

{

 yield return "Who";

 yield return " is";

 yield return "John Galt?";

}

假設上面的代碼位於一個名為foo的類中,你可以這樣寫:

foreach ( string s in new foo )

{

   Console.Write(s);

}

輸出結果將會是:

Who is John Galt?

如果你停下來思考一下,這也是之前的代碼所做的事。它遍曆了自己的foreach迴圈,並且產生出它所找到的每個string字串

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.