C#字符串中的字符数组默认是只读的,发现可以用C#的指针去修改字符串,在C/C++中,如果把字符串中间的一个字符设置为'\0',那么后面的不再起作用(不显示),但是C#里就不行了。string s="123456789012345678901234567890";
unsafe
{
fixed(char* p=s)
{
char* cp=p;
for(char i='A';i<='Z';i++)
{
*cp++=i;
}
cp=p;
Console.WriteLine(s);//输出ABCDEFGHIJKLMNOPQRSTUVWXYZ7890,没问题。
*(cp+9)='$';
Console.WriteLine(s);//输出ABCDEFGHI$KLMNOPQRSTUVWXYZ7890,没问题。
*(cp+5)='\0';
Console.WriteLine(s);//输出ABCDE GHI$KLMNOPQRSTUVWXYZ7890,和C/C++不一样了,'\0'后面的仍然显示。
}
}