zoukankan      html  css  js  c++  java
  • 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才行呢,直到现在也没有答案,我只是觉得是不是微软的程序员里面也有脑袋发热的,晚上无聊就反编译看了下源码,里面东西不多,但是觉得很奇怪,做个标记,以后再研究了。

     

  • 相关阅读:
    ACM-ICPC(10/21)
    ACM-ICPC (10/20)
    ACM-ICPC (10/19)
    ACM-ICPC (10/17)
    ACM-ICPC (10/16) Codeforces Round #441 (Div. 2, by Moscow Team Olympiad)
    ACM-ICPC (10/15) Codeforces Round #440 (Div. 2, based on Technocup 2018 Elimination Round 2)
    ACM-ICPC (10/14)
    战神CPU计算机硬件组装
    ACM-ICPC (10/12)
    ACM-ICPC (10/11)
  • 原文地址:https://www.cnblogs.com/fat_li/p/3426164.html
Copyright © 2011-2022 走看看