前言
上次在公司开会时有同事分享windebug的知识, 拿的是string字符串Concat拼接 然后用while(true){}死循环的Demo来讲解.
其中有提及string操作大量字符串效率低下的问题, 刚好自己之前也看过类似的问题, 于是便拿出来记录一下.
本文内容: 参数传递问题剖析, string与stringbuilder详解
1,参数传递问题剖析
对于C#中的参数传递,根据参数的类型可以分为四类:
- 值类型参数的按值传递
- 引用类型参数的按值传递
- 值类型参数的按引用传递
- 引用类型参数的按引用传递
1.1值类型参数的按值传递
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 6 int addNum = 1; 7 // addNum 就是实参, 8 Add(addNum); 9 } 10 11 // addnum就是形参,也就是被调用方法中的参数 12 private static void Add(int addnum) 13 { 14 addnum = addnum + 1; 15 Console.WriteLine(addnum); 16 } 17 }
对于值类型的按值传递,传递的是该值类型实例的一个拷贝,也就是形参此时接受到的是实参的一个副本,被调用方法操作是实参的一个拷贝,所以此时并不影响原来调用方法中的参数值,为了证明这点,看看下面的代码和运行结果就明白了: