值类型/引用类型/参数传递
- 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 而不用+=。
-
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) 收藏 举报
浙公网安备 33010602011771号