调用方法后,参数都是引用类型,为何结果不同?
class Program
     {
         static void Main(string[] args)
         {
             string name = "text";
             Change(name);
             Person p1 = new Person();
             p1.Name = "text";
             Change2(p1);
             Console.WriteLine("Change={0},Change={1}",name,p1.Name);
             Console.Read();              
         }
         static void Change(string name)
         {
             name =  "改变";
         }
         static void Change2(Person c1)
         {          
             c1.Name = "改变";
         }     
     }      
     class Person
     {
         private string name;
         public string Name
         {
             get { return name; }
             set { name = value; }
         }
         private int age;
         public int Age
         {
             get { return age; }
             set { age = value; }
         }
     }
//输出值为:
Change=text,Change1=改变
我看到C#图解教程里面都说过:
name和Person 都是引用类型,而在传入方法时,都是进行了值传递
但是同样是引用类型,为什么返回的结果不一样呢?
------解决方案--------------------因为 Change2方法中传递的是Person对象
------解决方案--------------------String 虽然是引用类型 不过是不可变的 
对字符串做一些操作 比如大小写的转换 += 实际上是重新创建了一个字符串
这也是为什么在做大量字符串拼接的时候要使用StringBuilder 而不用+=