A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王针 中级黑马   /  2012-6-5 08:28  /  2393 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我写了如下代码:
  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呢?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

10 个回复

倒序浏览
占的字节是byte类型的二进制字节,而length是一个字符串的长度,长度就是算的字符串中的字符个数

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
length是字符的长度

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
这个与程序中定义的字符串指针有很大关系,输出的字符串长度是依据字符串指针来衡量字符串的长度。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
  你可一在Length上单击右键,转到定义看:
// 摘要:
        //     获取当前 System.String 对象中的字符数。
        //
        // 返回结果:
        //    当前字符串中字符的数量
        public int Length { get; }

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
string str1 = "黑马程序员";
char类型和string类型无关,此例中存储为string类型,其length属性表示其中元素的个数,而与元素所占无关。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
懂了。
我一直把汉字理解为两个英文字符。Ort
回复 使用道具 举报
String 中的length()方法返回的是字符串的长度,该长度就是字符串中Unicode 代码单元的数量,Unicode编码是用两个字节来存储一个字符。就是16位来表示一个字符。所以都是5.

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
c#支持uncode码,所以中文字符串是没问题的,length是指字符串的字符个数,不是占的内存空间。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
length 表示字符串的长度 输出当然是5了

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
char在C#中它属于值类型(Value Type),string在C#中它属于引用类型(Reference Type),length是返回字符串的长度,最后输出的结果是5.

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马