运动和饮食

一房,一车,一老婆,一儿,一女,足矣 睡眠:早睡早起(10点睡,六点起) 这个世界从来不缺逆来顺受者,缺的,永远都是积极主动,有独立想法的人。

导航

值类型/引用类型/参数传递

    1. string是特殊的引用类型

      string str1 = "abc";

      string str2 = str1;

      str1 = "123"; //创建了一个新的字符串对象来保存“123”,也就是此str1已非彼str1了,,“此”str1的值的改变也就不能影响“彼”str1的值了,当然str2的值也就不会改变了

      Console.WriteLine(str2);//输出:abc

            实质上str1 = "123"str1=new string("123")的简写,它的每一次赋值都会抛掉原来的对象而生成一个新的字符串对象,分配新的内存空间,因此string是不可改变的。如果要创建可修改的字符串,可使用stringbuilder以获得更好的性能。

      所以说,String 是引用类型,不过是不可变的。对字符串做一些操作(比如大小写的转换、+=), 实际上是重新创建了一个字符串。这也是为什么在做大量字符串拼接的时候要使用StringBuilder 而不用+=。

 

  1. string类型的参数传递    

static void StrChange(string str) 是值传递

 

static void StrChange(ref string str) 是引用传递

        static void StrChange(string str) 这种值传递,在函数体内对str进行修改之前,与函数外部的变量指向同一块内存,是“引用”传递,但在函数体内对str修改后,就会触发对该str重新分配一块内存。

         static void StrChange(ref string str) 引用传递,通过引用传递参数以影响调用程序中的变量。 

 

posted on 2013-01-16 11:02  博客园_net2.0  阅读(100)  评论(0)    收藏  举报