日期:2014-05-20  浏览次数:20860 次

下面这段代码执行后,为什么结果是A string,而不是string being converted.?
class   Class1    
{  
    private   string   str   =   "Class1.str ";  
    static   void   StringConvert(string   str1)  
        {  
            str1   =   "string   being   converted. ";  
        }
    static   void   Main()    
        {  
              string   str   =   "A   string ";
              StringConvert(str);
              Console.WriteLine(str);   //   运行结果是:A   string
        }
}

我在机器上运行了上面的代码,发现结果是A   string,而不是我想象中的string   being   converted.不知道为什么?
我认为当执行过StringConvert方法后,局部变量str作为实际参数由原来的值A   string就变成了string   being   converted.当输出时,自然就是string   being   converted.了。可是机器上显示的却是A   string。不知道为啥?请帮我看一下,谢谢了!


------解决方案--------------------
至于原因也说下吧:

string str = "A string ";
str指向 "A string "

static void StringConvert(string str1)
{
str1 = "string being converted. ";
}
这时str1先指向 "A string ",但是当重新赋值str1 = "string being converted. "; 后,会另外分配一块地址,存放 "string being converted ",并且str1指向它..

但str的指向并没有变,始终指向 "A string "..