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

时间:2009-08-27 22:41:54

标签: c#

当你有一个带字符串参数的函数时,是否会在调用函数时创建另一个字符串实例?

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

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

默认情况下,参数按值传递,参考类型变量是参考值。但是,由于String类是不可变的,所以对传递给方法的字符串的任何更改都会将本地引用更改为指向新的不可变字符串实例,正如Steven已经说过的那样。

您可能会发现Jon Skeet's article on parameter passing启发