每个人在日常编程中都会更频繁地使用String类型。 另外,大多数人在String和StringBuilder之间进行选择时会犯一个常见错误。
在字符串的串联中,如果我们最初创建一个字符串,说s =“ Hello”,然后将其附加为s = s +“ World”,则实际上是在内存中创建两个string实例。 由于String是不可变的,因此原始字符串和新字符串都将存储在内存中。 因此,每次我们将新值连接在一起时,都会创建一个新实例,并且如果进行多次连接,则会造成很大的性能损失。 为此,我们对字符串所做的所有活动都作为单独的引用存储在内存中,必须尽可能避免这样做。
我们可以使用StringBuilder,它在这种情况下非常有用。 对于上面的示例,使用StringBuilder作为s.Append(“ World”);。 它仅将值存储在原始字符串中,并且不会创建其他引用,这肯定会给我们带来性能上的提升。
例如-
(I)字符串动作:
string str="";
DateTime startTime = DateTime.Now;
Response.Write(("<br>Start time:" + startTime.ToString()));
int i;
for(i=0;i<20000;i++)
{
str += i.ToString()+ "<br>";
}
DateTime EndTime= DateTime.Now;
Response.Write(("<br>End time:" + EndTime.ToString()));
输出:
开始时间:3/22/2006 10:23:44 AM
结束时间:3/22/2006 10:25:08 AM
上面的代码花费了1分24秒来完成其操作。
(二)字符串生成器动作:
StringBuilder strbuilder = new StringBuilder();
DateTime startTime1 = DateTime.Now;
Response.Write(("<br>Start time:" + startTime1.ToString()));
int i1;
for (i1 = 0; i1 < 20000; i1++)
{
strbuilder.Append(i1 + "<br>");
}
DateTime EndTime1 = DateTime.Now;
Response.Write(("<br>End time:" + EndTime1.ToString()));
输出:
开始时间:3/22/2006 10:25:08 AM
结束时间:3/22/2006 10:25:09 AM
上面的代码花了1秒钟才能完成其操作。
因此请记住,当我们不想连接时,一定要使用String,而当我们必须处理多个串联时,则一定要使用StringBuilder。
谢谢&Regs
巴拉斯·雷迪VasiReddy
From: https://bytes.com/topic/net/insights/756164-string-stringbuilder-usage