代码之家  ›  专栏  ›  技术社区  ›  Yuriy Faktorovich

当您有一个带有字符串参数的函数时,是否会创建该字符串的另一个实例?

c#
  •  0
  • Yuriy Faktorovich  · 技术社区  · 15 年前

    2 回复  |  直到 15 年前
        1
  •  6
  •   Steven Sudit    15 年前

    不,它是对同一个不可变实例的引用。这意味着,如果在方法中为其分配一个新值,您所做的只是更改本地引用以指向另一个同样不可变的字符串。

        2
  •  2
  •   Russ Cam    15 年前

    字符串是引用类型,尽管是不可变的引用类型。

    默认情况下,参数通过值传递,对于引用类型变量,值就是引用。但是,由于String类是不可变的,因此对传递给方法的字符串的任何更改都将更改本地引用,以指向新的不可变字符串实例,正如Steven所述。

    Jon Skeet's article on parameter passing 启发