2011-05-11 20 views

回答

1

一个字符串不是空终止(结束于空),所以你可以实际存储空字符('\ 0')在一个字符串内。您要使用的字符串不能包含其中的某个特殊字符。

下面是引用空字符微软的字符串的定义:

http://msdn.microsoft.com/en-us/library/ms228362.aspx

+2

其实在实践中.NET中的字符串是*双向*长度前缀*和*空终止。在OLE自动化中也是如此; BSTR也有这个属性。 – 2011-05-11 14:53:35

+0

@Eric Lippert - 来自微软文档'在C#字符串的末尾没有空终止字符' – IAmTimCorey 2011-05-11 14:56:42

+5

从C#用户的角度来看,没有空终止字符;如果你有一个十个字符的字符串并要求第10个字符,那么你不会得到空值。但作为一个实现细节,框架实际上确实分配了额外的两个字节,实际上确实在那里放置了一个零字符。类似地,作为实现细节,运行时将字符串的长度在字符数据之前存储在内存中。你无法在C#中知道*,但是如果你看一下调试器中的原始内存,你会看到它。 – 2011-05-11 15:57:13

相关问题