String.Replace无法按预期工作

bal*_*nta 0 c# winforms

String.Replace有以下问题:

string str = "0?0";
str = str.Replace("?", "&&");
Run Code Online (Sandbox Code Playgroud)

当我打印出str时,它将是"0&0"而不是"0 && 0".要获得"0 && 0",我必须写

str = str.Replace("?", "&&&&");
Run Code Online (Sandbox Code Playgroud)

这是为什么?

Yuc*_*uck 6

&是WinForms中的一个特殊字符,用于表示键盘快捷键.使用&&是WinForms如何逃避&符号.

因此,要在WinForms中显示它,您必须在字符串中放置两个 &字符,如下所示:

str = str.Replace("?", "&&&&");
Run Code Online (Sandbox Code Playgroud)

这严格来说是一个WinForms"东西",与C#或.NET字符串无关.这种方式至少可以追溯到Visual Basic 4 - 可能在此之前.