黑马程序员技术交流社区

标题: char类型的疑问 [打印本页]

作者: 王针    时间: 2012-6-5 08:28
标题: char类型的疑问
我写了如下代码:
  1. string str1 = "黑马程序员";
  2. string str2 = "hmcxy";
  3. int str1Length = str1.Length;
  4. int str2Length = str2.Length;
  5. Console.WriteLine(str1Length);
  6. Console.WriteLine(str2Length);
  7. Console.ReadKey();
复制代码
有个问题想不通,一个汉字不是说占两个字节的吗?也就是说应该相当于两个字符,为什么最后输出的都是5呢?
作者: 蒋春    时间: 2012-6-5 09:10
占的字节是byte类型的二进制字节,而length是一个字符串的长度,长度就是算的字符串中的字符个数
作者: 牛景亮    时间: 2012-6-5 09:14
length是字符的长度
作者: 许庭洲    时间: 2012-6-5 09:16
这个与程序中定义的字符串指针有很大关系,输出的字符串长度是依据字符串指针来衡量字符串的长度。
作者: 丁官林    时间: 2012-6-5 09:19
  你可一在Length上单击右键,转到定义看:
// 摘要:
        //     获取当前 System.String 对象中的字符数。
        //
        // 返回结果:
        //    当前字符串中字符的数量
        public int Length { get; }
作者: 姚耀    时间: 2012-6-5 09:28
string str1 = "黑马程序员";
char类型和string类型无关,此例中存储为string类型,其length属性表示其中元素的个数,而与元素所占无关。
作者: 王针    时间: 2012-6-5 09:40
懂了。
我一直把汉字理解为两个英文字符。Ort
作者: 何拴绪    时间: 2012-6-5 09:57
String 中的length()方法返回的是字符串的长度,该长度就是字符串中Unicode 代码单元的数量,Unicode编码是用两个字节来存储一个字符。就是16位来表示一个字符。所以都是5.
作者: 刘豪    时间: 2012-6-5 22:49
c#支持uncode码,所以中文字符串是没问题的,length是指字符串的字符个数,不是占的内存空间。
作者: 非常小可    时间: 2012-6-6 00:59
length 表示字符串的长度 输出当然是5了
作者: 钟山山    时间: 2012-6-6 16:46
char在C#中它属于值类型(Value Type),string在C#中它属于引用类型(Reference Type),length是返回字符串的长度,最后输出的结果是5.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2