string.Replace不按预期运行

2 .net c# string

有人可以解释为什么我从这两个陈述得到不同的结果?我认为将值重新分配给同一个变量会导致我在上面的例子中得到的值.我在这里错过了什么?

_body.Replace("##" + _variableName + "##",
    templateVariables[_variableName])
Run Code Online (Sandbox Code Playgroud)

你好pitty ## LastName ##,

_body = _body.Replace("##" + _variableName.ToUpper() + "##", 
    templateVariables[_variableName])
Run Code Online (Sandbox Code Playgroud)

你好## FirstName ## ## LastName ##,

Ray*_*Ray 7

字符串是不可变的,因此Replace函数不会修改它所调用的字符串.您需要像在第二个示例中那样再次分配它.

正如其他人所指出的那样,ToUpper调用将确保变量名称不匹配.