日期:2014-05-18  浏览次数:20911 次

C# 中有关String.Length
对于String obj = "噢噢噢噢"; 和String str="abcd"
为什么两者的String.Length都是4?
String 是如何存放字符的?

------解决方案--------------------
了解一下什么是unicode
------解决方案--------------------
因为默认是unicode编码,一个汉字也是1个长度
------解决方案--------------------

Length 属性返回此实例中 Char 对象的个数,而不是 Unicode 字符个数。 原因在于一个 Unicode 字符可能会用多个 Char 表示。 使用 System.Globalization.StringInfo 类来处理每个 Unicode 字符而不是每个 Char。

在某些语言(例如 C 和 C++)中,null 字符指示字符串的结尾。 在 .NET Framework 中,null 字符可以嵌入到字符串中。 当字符串包含一个或多个 null 字符时,这些空字符将包括在字符串的总长度中。 例如,在下面的字符串中,子字符串“abc”和“def”由一个 null 字符分隔。 Length 属性返回 7,表示它包含六个字母字符以及一个 null 字符。

http://msdn.microsoft.com/zh-cn/library/system.string.length.aspx