999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

String Builder類使用探討

2009-04-29 00:00:00李錦威
電腦知識與技術 2009年33期

摘要:首先對.Net Frameword中字符串內存的存放方式進行了分析,然后針對說明StringBuilder類的工作方式及性能對比,最后給出StringBuilder類常用的方法。

關鍵詞:StringBuilder .Net Frameword 字符串 軟件開發

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2009)33-9353-02

1 .Net Framework字符串存儲方式及StringBuilder類突破點分析

StringBuilder是.NET Framework一個功能強大的新類,功能是對字符串進行拼接、插入、刪除、替換等操作,從功能而言,并沒有太大的突破,所有的平臺語言對字符串操作都有相對應的功能,StringBuilder的價值在于能高效地實現這些功能,而不是簡單的進行重復。

在解析StringBuilder的高效前,必須首先了解.Net Framework對字符串進行存儲的一個重要特性:所有字符串對應的內存都是不可改變的,也就是說,字符串的內存存儲單元是不可以更改的。在.Net Framework中不可以真正直接改變一個字符串變量的內容,如果更改了一個字符串的取值,那么該字符串原來對應的內存將被作廢,而內存中一個新的地址將被重新創建并分配給字符串去存儲新的取值。例如,下面的代碼對字符串S的取值作出修改:

string S;

S = ¨AAA¨;

S = ¨BBB¨;

由于在.Net Framework中,內存中的字符串的存儲內容不可以更改,每當你改變S的取值,.Net Framework都會在內存的一個新位置重新創建一個新的字符串,所有上面的程序會導致這樣的一個結果:內存在某個位置(假定內存地址為3000)存放S,但位置3000什么都沒有(只有S的初始值);然后在新的位置(3010)存儲了字符串“AAA”,最后在第三個位置(3030)存儲了字符串“BBB”。.Net Framework不斷地創建新的字符串,同時不斷改變S的索引,指向新的內存地址。可見,這種方式非常笨拙,雖然有效但效率不可能高。

StringBuilder類則以完全不同的方式工作,當你創建了StringBuilder類的實例后,你就定義了一個字符串的內存塊,這個內存塊的內容是可以被改變的,通過StringBuilder,我們可以直接改變字符串內存的內容。例如,運用StringBuilder實現上一個例子的功能:

System.Text.StringBuilderSB = new System.Text.StringBuilder();

SB.Append(¨AAA¨);

SB.Replace(¨AAA¨, ¨BBB¨);

.Net Framework首先在內存創建一個新的內存塊(假定內存位置也是3000),開始內容為空,然后變成“AAA”,隨后變成“BBB”。可見從功能的實現上,StringBuilder對比傳統的方式有重大的突破,這是StringBuilder高效性的基礎。

2 StringBuilder性能對比

這種直接修改內存的能力使StringBuilder具備明顯的速度優勢。我們可以通過兩個簡單的功能一樣的循環程序進行驗證。

首先我們不使用StringBuilder,使用傳統方法,直接對string進行操作,對一個字符串進行10000次的拼接:

stringst = ¨¨;

for (int i=0;1<10000;i++){

st += i.ToString();

st +=¨,¨;}

然后我們使用StringBuilder類來實現同樣的功能:

System.Text.StringBuilderSB = new System.Text.StringBuilder();

for (int i=0;1<10000;i++){

SB.Append (i);

SB.Append (,);}

在我的電腦,同樣的硬件配置及系統環境中,使用傳統方法程序運行5秒完成,使用StringBuilder的程序在1秒內完成!可見從效率上兩者之間的差異是很大的。

3 StringBuilder各種功能的實現

3.1 拼接功能

在StringBuilder類中,Append和AppendFormat是最常用的兩個方法,它們實現StringBuilder的拼接功能。Append方法可以直接把一個新值加入到字符串空間,而且新值的數據類型不需要進行轉換。可以使用Append簡單地把每一個變量的內容加入字符串,不用管這個變量的類型是什么,例如把一個bool類型的變量實例直接加入StringBuilder的實例中。

使用AppendFormat可以將各種類型的數據加入字符串空間,并且進行格式化。如下面的例子中,把double類型的變量dou直接加入StringBuilder 的實例SB,并進行格式化,程序運行后將會顯示 $888.88:

double dou=888.88;

System.Text.StringBuilderSB = new System.Text.StringBuilder();

SB.AppendFormat (¨{0:c}¨,dou );

Reponse.Write(SB.ToString());

3.2 插入和刪除功能

在StringBuilder類中,Inert實現插入功能。Insert方法中需給出起始位置和具體字符串值。如你想在字符串“AAA CCC”中插入“BBB”,成為“AAA BBB CCC”可以執行以下代碼:

SB.Append(¨AAA CCC¨);

SB.Insert(4, ¨BBB ¨);

在StringBuilder類中,Remove實現刪除功能。Remove方法中需給出起始位置和刪除字符串的長度,如想把剛才執行完Insert的字符串去掉剛插入的“BBB”可以執行以下代碼:

SB.Remove(4,4);

3.3 替代功能

在StringBuilder類中,Replace實現替代功能。Replace方法需要給需要替換的字符串和替代用的字符串,還可以指定范圍。如你想把“ABCD ABCD”中的“AB”都換成“EF”,字符串變為“EFCD,EFCD”,可以執行以下代碼:

SB.Append(¨ABCD ABCD¨);

SB.Replace(¨AB¨,¨EF¨);

如果只想把“ABCD ABCD”中第一個“AB”都換成“EF”,字符串變為“EFCD,ABCD”,可以指定替代范圍,執行以下代碼:

SB.Append(¨ABCD ABCD¨);

SB.Replace(¨AB¨,¨EF¨,0,4);

3.4 容量監控功能

在StringBuilder類中,通過Capacity屬性設置StringBuilder實例的容量,你可以在實例化StringBuilder時設置初始的容量值,也可以通過類方法EnsureCapacity來自動分配字符串空間,以便隨時容納新數據,如果擔心容量設置錯誤而造成程序報錯,可以使用一個try…catch塊進行恢復。

4 結論

.Net Framework中的字符串存儲不可改變,使用StringBuilder類操作字符串比使用傳統方法高效得多,值得在.Net Framework的開發中使用。

參考文獻:

[1] 朱仲杰.Java2全方位學習[M].北京:機械工業出版社,2006.

[2] 趙克立.C#.NET 編程培訓教程[M].北京:清華大學出版社,2003.

主站蜘蛛池模板: 一本大道东京热无码av| 69国产精品视频免费| 91精品人妻一区二区| 97超碰精品成人国产| 在线欧美日韩国产| 国产玖玖视频| 日韩一区精品视频一区二区| 国产在线高清一级毛片| 国产亚洲精品97AA片在线播放| 中文字幕在线观看日本| 无码福利日韩神码福利片| 亚洲天堂视频在线观看免费| 福利姬国产精品一区在线| 亚洲综合激情另类专区| 久久中文无码精品| 国产男女XX00免费观看| 亚洲欧美一区二区三区图片 | 国产日韩欧美黄色片免费观看| 97人人模人人爽人人喊小说| 欧美人与动牲交a欧美精品| 日韩精品毛片| 亚洲AV无码一区二区三区牲色| 全部毛片免费看| 四虎永久在线精品国产免费 | www.91中文字幕| 少妇精品网站| 欧美不卡二区| 欧美日本激情| 国产女人18毛片水真多1| 色婷婷啪啪| 久久久亚洲色| 久久久久无码国产精品不卡| 老司机午夜精品视频你懂的| 激情亚洲天堂| 亚洲浓毛av| 国产爽歪歪免费视频在线观看| 亚洲精品人成网线在线| 欧美激情,国产精品| 四虎影视8848永久精品| 2021国产乱人伦在线播放| 日韩欧美亚洲国产成人综合| 国产精品黄色片| 午夜福利视频一区| 思思热精品在线8| 一区二区三区成人| 99精品伊人久久久大香线蕉 | 免费国产好深啊好涨好硬视频| 毛片一区二区在线看| V一区无码内射国产| 国产午夜精品一区二区三| 一级做a爰片久久毛片毛片| 在线中文字幕网| 亚洲永久精品ww47国产| 四虎成人免费毛片| 99re热精品视频中文字幕不卡| 在线看片国产| 国内毛片视频| 麻豆精品在线视频| 亚洲国产成人精品无码区性色| 精品成人免费自拍视频| 亚洲三级a| 国产伦精品一区二区三区视频优播| 国产亚洲欧美在线中文bt天堂| 四虎精品国产永久在线观看| 2021最新国产精品网站| 国产成人亚洲精品蜜芽影院| 中文字幕伦视频| 国产精品久久国产精麻豆99网站| 激情亚洲天堂| 国产区91| 久久久精品无码一二三区| 一级毛片免费播放视频| 久久精品中文字幕免费| 日本人妻丰满熟妇区| 欧美国产在线看| 亚洲国产中文欧美在线人成大黄瓜| 亚洲第一成网站| 热re99久久精品国99热| 99视频精品全国免费品| 欧美自拍另类欧美综合图区| 亚洲中文精品久久久久久不卡| 欧美日一级片|