在C#中更改数组中的元素

时间:2017-05-22 20:04:00

标签: c#

这两行代码之间有什么区别?

  1. arrayOneF[i + 1].Replace(arrayOneF[i + 1], "x");

  2. arrayOneF[i + 1] = arrayOneF[i + 1].Replace(arrayOneF[i + 1], "x");

  3. 第二个代码给出了所需的结果,而在第一个代码中,行被执行但没有给出我想要的结果。为什么我必须使元素[i + 1]等于代码? ISN'第一个代码足以对元素进行更改吗?

3 个答案:

答案 0 :(得分:3)

Replace返回任何数据的新实例。它不会替换源数据中的值。这就是为什么在第一个例子中,替换完成并作为新值返回。由于它没有分配给任何东西,它就会丢失。

在第二种情况下,您实际上将值分配回相同的数组位置,捕获替换结果。

答案 1 :(得分:2)

C#中的字符串是不可变的。 Replace返回一个新字符串;它不会以任何方式修改原始字符串。因此,在第一个示例中,您将创建一个新字符串并立即将其丢弃。

答案 2 :(得分:1)

第一行使用提供的参数调用Replace中存储的任何对象的arrayOneF[i + 1]方法 - 从代码看起来是一个字符串。

作为字符串,结果将被返回并丢弃,因为它未被使用。原始字符串不会更改,因为c#中的stings是不可变的。

第二行的作用相同,只有retun值被赋值给数组中的同一个插槽。