这段代码:
string a = "abc";
string b = "A𠈓C";
Console.WriteLine("Length a = {0}", a.Length);
Console.WriteLine("Length b = {0}", b.Length);
输出:
Length a = 3
Length b = 4
为什么?我唯一能想象的是汉字长2个字节,并且该.Length
方法返回字节数。
𠈓
131603,并且因为char是无符号字节,所以您可以用2个字符而不是4个字符来实现该值(无符号16位值的最大值为65535(或65536个变体),并使用2个字符表示它允许的最大变化数量不是65536 * 2(131072),而是65536 * 65536个变化(4,294,967,296,有效为32位值)