char是一个Unicode字符,存储0~65535之间的整数,这个存储大小和ushort一样。
char c = '我';
程序加断点进入调试,发现char里头存储的内容为       25105 '我'
直接输出c则输出内容为'我',转换为int类型则输出25105为什么直接输出C输出内容是'我',而不是   25105 '我',.net是怎么做到的呀?只不是有2个属性,而这2个属性是私有的,所以我监视的时候看不到呀,监视的时候能够看到私有属性么?

解决方案 »

  1.   

    每个字符都有相对应的ACII码,char类型强转为int后输出的是ACII码
      

  2.   

    楼上正解。
    建议你使用string,省了多少麻烦。
      

  3.   

    因为“显示”的函数让char被装箱,并且调用了ToString()方法,而ToString()方法会取得字面值。
      

  4.   

     char输出应该是先执行ToString方法。
    char的ToSTring方法
     public override string ToString()
        {
            return ToString(this);
        }public static string ToString(char c)
        {
            return new string(c, 1);
        }
      

  5.   

    谢谢大家,我想char里头保存的不会是   25105 '我', 我想他保存的内容就是  25105  这个数字。但是我监视的时候显示的却是   25105 '我'   这个可能和VS工具的关系吧
      

  6.   


    你在断点调试的时候,显示的值也是调用 ToString() 来显示的。
    你可以自定义一个类,然后重写他的 ToString() 方法,然后创建一个该类的对象,断点调试,看他的值,默认显示的就是 ToString() 的内容
      

  7.   

    我感觉所有的Console.Write反倒最终都是调用Write(char)