c# stringbuilder 在哪个空间 怎么引用

c# stringbuilder 在哪个空间 怎么引用,第1张

string是引用类型,只不过它在某此 *** 作上会表现出值类型的特征.

当使用重载 *** 作符”=”给string对象赋值时,string的对象是引用类型,它保留在堆上,而不是堆栈上.因此,当把一个字符串赋给另一个字符串时,会得到对内存中同一个字符串的两个引用.例如,修改其中一个字符串,就会创建一个全新的string对象(注意,这个过程发生在”=”中),而另一个字符串没有改变.考虑下面的代码:

public class MyClass

{

public static void Main()

{

string str1 = "I am a number"

string str2 = str1

Console.WriteLine("str1 = "+str1)

Console.WriteLine("str2 = "+str2)

str1 = "I am another number"

Console.WriteLine("after str1 changed... str1 = "+str1)

Console.WriteLine("after str1 changed... str2 = "+str2)

Console.ReadLine()

}

}

Output :

str1 = I am a number

str2 = I am a number

after str1 changed...str1 = I am another number

after str1 changed...str2 = I am a number.

字符串的缺点

当需要对一个字符串变量重复赋值时,在内存中会产生大量的垃圾数据信息。

当重复赋值的频率很高时,执行的效率就会降低。

2.StringBuilder 简介

String,字符串;Builder,构建器;连起来是“字符串构建器”。

StringBuilder 是一个类。SB 类型的变量是引用类型。

StringBuilder 类型的“ 字符串变量 ”,一直 *** 作同一块内存空间, 不会产生垃圾数据 ,且执行效率远远高于 string 类型的字符串变量

StringBuilder 使用方法

1.创建 StringBuilder 类型的变量

StringBuilder sb = new StringBuilder()        //创建一个对象。

注意:StringBuilder 依赖 System.Text 命名空间。

2.往 sb 中追加数据

sb.Append(i)            //追加数据。

sb.ToString()            //将 sb 转成字符串形式。

演示①:单个数据的追加;

演示②:使用 for 循环循环追加数据。

3.清空 sb 中的数据

sb.Clear()                //将 sb 清空。

StringBuilder 效率测试

1.Stopwatch 类

Stopwatch,秒表计时器,用来记录程序运行的时间。

注意:Stopwatch 依赖 System.Diagnostics 命名空间。

2.创建 Stopwatch 类型对象

Stopwatch sw = new Stopwatch()

sw.Start()            //计时器开始。

sw.Stop()            //计时器结束。

sw.Elapsed        //开始到结束之间的时长。

3.效率测试

使用 for 循环分别往 string 和 StringBuilder 中追加 5 万个信息,统计时长


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11525158.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存