C# 隨筆 【ToList().Foreach()和Foreach()】

   1. 最近在作一個Socket通信的例子,可是若是使用UTF-8編碼傳輸中文的話取和的會不同。早上作了測試 。程序員

    string str = "a我。.";看代碼中間是一個英文,一箇中文一箇中文的句號和一個通常的句號,按照全角佔兩字節,中文佔兩字節,算出來該是6個字節才行:測試

   在下面的測試中:編碼

          

  string str = "a我。.";

            Console.WriteLine(Encoding.Default.GetByteCount(str)); //6
            Console.WriteLine(Encoding.ASCII.GetByteCount(str));   //4
            Console.WriteLine(Encoding.UTF32.GetByteCount(str));  16
            Console.WriteLine(Encoding.UTF8.GetByteCount(str));    8

            因此在通迅中要取得長度該用 Encoding.Default.GetByteCount(str);spa

2.接下來引出正題,在上面的測試後,我接下來想顯示各個Byte,在我之前的寫法中,我習慣 Encoding.Default.GetByteCount(str).ToList().Foreach();以前也測試過這樣效果不是很好,比通常的Foreach慢,而後就本身寫了個擴展方法,擴展方法很簡單,直接針對IEnumable<T>擴展就好了,但是寫完事後以爲很奇怪,foreach是很是簡單的了,爲何微軟的foreach必需要是list才行呢,直到如今也沒有答案,我只是以爲是否是微軟的程序員裏面也有腦殼發熱的,晚上無聊就反編譯看了下源碼,裏面東西很少,可是以爲很奇怪,作個標記,之後再研究了。blog

相關文章
相關標籤/搜索