我读,让我停在某行代码:为什么将字符串传递给方法的行为与列表<object>不同,如果它们都是引用类型?
List<object> props = new List<object>();
DoWork(param1, param2, props);
//props.Count grew up
我的想法是改变其范围以外的变量需要把它当作out
或ref
,但后来我意识到,除非DoWork
方法的变化像props
参考:
props = new List<object>();
参考将指向同一位置。所以这里不需要使用ref
。
,然后我创建了一个方法string
类型:
static void ChangeMe(string str)
{
str = "W77";
}
public static void Main(string[] args)
{
string str = "p1";
ChangeMe(str);
//str is still "p1"
}
如果激励名单的行为,它的范围之内可以改变的是它的引用类型,为什么string
,如果它不是在重新配置不会改变被调用方法,它是一个参考类型,如List<object>
?