前面说过String是引用类型,如果我们创建很多个相同值的字符串对象,它在内存中的指向地址应该是一样的。也就是说,当我们创建了字符串对象s,它的值是"abc",当我们再创建一个值为"abc"的字符串对象str时它不会再去分配一块内存空间,而是直接指向了s在内存中的地址。这样可以确保内存的有效利用。看下面的代码:
public static void Main(string[] args)
{
string s = "abc";
Console.WriteLine(s); //输出 abc
Add(s); //调用下面方法
Console.WriteLine(s); //输出 def
Console.Read();
}
public static void Add(string str)
{
str = "def";
}
//改变方法的参数, 使用ref关键字,,
public static void Main(string[] args)
{
string s = "abc";
Console.WriteLine(s); // 输出 abc
Add(ref s);
Console.WriteLine(s); //abcdef
Console.Read();
}
public static void Add(ref string str) {
str = "def";
}
设置StringBuilder容量
StringBuilder对象为动态字符串,可以对其设置好的字符数量进行扩展。另外,还可以设置一个最大长度,这个最大长度称为该StringBuilder对象的容量(Capacity)。
为StringBuilder设置容量的意义在于,当修改StringBuilder字符串时,当其实际字符长度(即字符串已有的字符数量)未达到其容量之前,StringBuilder不会重新分配空间;当达到容量时,StringBuilder会在原空间的基础之上,自动不进行设置,StringBuilder默认初始分配16个字符长度。有两种方式来设置一个StringBuilder对象的容量。
1.使用构造函数
StringBuilder构造函数可以接受容量参数,例如,下面声明一个StringBuilder对象sb2,并设置其容量为100。
//使用构造函数
StringBuilder Mysb1=new StringBuilder("Hello",100);
2.使用Capacity读/写属性










