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);

2.接下来引出正题,在上面的测试后,我接下来想显示各个Byte,在我以前的写法中,我习惯 Encoding.Default.GetByteCount(str).ToList().Foreach();之前也测试过这样效果不是很好,比一般的Foreach慢,然后就自己写了个扩展方法,扩展方法很简单,直接针对IEnumable<T>扩展就行了,可是写完过后觉得很奇怪,foreach是非常简单的了,为什么微软的foreach必须要是list才行呢,直到现在也没有答案,我只是觉得是不是微软的程序员里面也有脑袋发热的,晚上无聊就反编译看了下源码,里面东西不多,但是觉得很奇怪,做个标记,以后再研究了。

 

posted on 2013-11-15 22:24  胖子黎  阅读(1636)  评论(0编辑  收藏  举报

导航