我看到这个奇怪的问题,在网页上找不到任何类似的东西:
int l = "K".Length; //This actually returns 2 !!! The 'Autos' window in //the debugger also shows "K".Length as 2. string s = "K"; l = s.Length; //Whereas this returns 1 as expected
我在各种C#项目中尝试过,甚至要求另一位开发人员确认在不同机器上的不同项目中的行为是相同的.
我在VB.NET中尝试过相同的方法:
Dim l As Integer = "K".Length 'This returns 1 correctly
我失去了吗?
解决方法
那是因为“K”与“K”不一样,其中有一个看不见的字符,即ascii值为30(记录分隔符).
你可以通过这样做来验证
byte[] bytes = Encoding.ASCII.GetBytes("K");