原因很简单。因为字符串驻留技术,所以string虽然是引用类型,常常表现出值类型的行为。// 假设有两个方法如下:
public void Foo(string str){
   str = "not aaa";
}
public void Foo(ref string str){
    str = "not aaa";
}
/************************************************************/
// 调用,这里注意:
string str = "aaa";
Foo( str ); // 调用完毕之后,string str的值是多少,还是"aaa"!!!Foo(ref str); // 调用完毕后,string str的值变成了 "not aaa";