最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解.NET中string與StringBuilder在字符串拼接功能上的比較

 更新時(shí)間:2018年11月04日 10:12:25   作者:森大科技  
string與StringBuilder的在字符串拼接時(shí)執(zhí)行效率上有差異,這篇文章主要介紹了詳解.NET中string與StringBuilder在字符串拼接功能上的比較,感興趣的小伙伴們可以參考一下

string與StringBuilder的在字符串拼接時(shí)執(zhí)行效率上有差異,因?yàn)镾tringBuilder類(lèi)中用了一個(gè)技巧:它申請(qǐng)了兩倍的內(nèi)存空間存放字符串,在調(diào)用Append方法拼接字符串時(shí),會(huì)先檢查剩余的空間是否能放下要拼接的字符串,若能放下,則將要拼接的字符串Copy到剩余的空間中,若不能放下,則再申請(qǐng)拼接后的字符串兩倍的長(zhǎng)度空間,將當(dāng)前字符串Copy到新的空間中(除了兩倍的空間外,這點(diǎn)跟string的拼接沒(méi)有太多的差異)。因此StringBuilder能提高字符串拼接的效率在于它減少了申請(qǐng)分配內(nèi)存的次數(shù),以及字符串Copy的數(shù)量。所以這里就有了以下4種情況的討論:

1.原來(lái)的長(zhǎng)字符串拼接短字符串。

這實(shí)際上就是最吻合StringBuilder申請(qǐng)多余空間的意圖,能夠達(dá)到最好的效果的一種情形。具體的情況是這樣的,假設(shè)一個(gè)StringBuilder存放的初始字符串長(zhǎng)度為1000,那么實(shí)例化這個(gè)StringBuilder時(shí),會(huì)申請(qǐng)2000的空間,隨后,每次拼接長(zhǎng)度為20的字符串,則會(huì)直接將這長(zhǎng)度為20的字符串按順序放在剩下的1000空間里,直到放滿(mǎn)為止,其間有50次的拼接操作,此時(shí)若再拼接一個(gè)長(zhǎng)度為20的字符串時(shí),因?yàn)榭臻g不夠,這是StringBuilder會(huì)申請(qǐng)2000*2=4000的空間,然后將原先已拼接的長(zhǎng)度2000的字符串Copy進(jìn)去后,繼續(xù)拼接新的長(zhǎng)度為20的字符串。這最后一步跟string操作的效率幾乎一樣的,主要是前面的50次拼接能減少50次的內(nèi)存創(chuàng)建以及Copy全部字符串到新字符串的效率損耗。若是string進(jìn)行拼接,則前50次拼接操作中,每次都會(huì)新分配一塊內(nèi)存,并將現(xiàn)有的字符串全部Copy到新的內(nèi)存中。

2. 原來(lái)的長(zhǎng)字符串拼接長(zhǎng)字符串。

這種情況在開(kāi)始時(shí)會(huì)因?yàn)榭臻g很快被用完,并不能體現(xiàn)StringBuilder在字符串拼接方面的優(yōu)勢(shì),但隨著拼接次數(shù)的增加,會(huì)轉(zhuǎn)換成第一種情況。

3.原來(lái)的短字符串拼接短字符串。

4.原來(lái)的短字符串拼接長(zhǎng)字符串。

其實(shí)后面三種情況都要根據(jù)實(shí)際來(lái)評(píng)估了,最終都是要向情況一進(jìn)行轉(zhuǎn)變。所以我們的關(guān)注點(diǎn)主要是被拼接的字符串與已有字符串之間長(zhǎng)度的差距有多少,能減少多少次臨時(shí)內(nèi)存分配來(lái)達(dá)到提高字符串拼接效率的目的的。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 請(qǐng)求如何進(jìn)入ASP.NET MVC框架

    請(qǐng)求如何進(jìn)入ASP.NET MVC框架

    這篇文章主要介紹了請(qǐng)求如何進(jìn)入ASP.NET MVC框架的實(shí)現(xiàn)過(guò)程,感興趣的小伙伴們可以參考一下
    2016-04-04
  • asp.net C#生成和解析二維碼的實(shí)例代碼

    asp.net C#生成和解析二維碼的實(shí)例代碼

    這篇文章介紹了asp.net C#生成和解析二維碼的實(shí)例代碼,有需要的朋友可以參考一下
    2013-10-10
  • Entity?Framework代碼優(yōu)先Code?First入門(mén)

    Entity?Framework代碼優(yōu)先Code?First入門(mén)

    這篇文章介紹了Entity?Framework的代碼優(yōu)先模式Code?First,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 淺談MVC框架的優(yōu)點(diǎn)(翻譯)

    淺談MVC框架的優(yōu)點(diǎn)(翻譯)

    這篇文章主要介紹了淺談MVC框架的優(yōu)點(diǎn)(翻譯),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • ASP.NET實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    ASP.NET實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了ASP.NET實(shí)現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-11-11
  • 詳解如何在.NET代碼中使用本地部署的Deepseek語(yǔ)言模型

    詳解如何在.NET代碼中使用本地部署的Deepseek語(yǔ)言模型

    這篇文章主要來(lái)和大家一起聊一聊怎么在?.NET?代碼中使用本地部署的?Deepseek?語(yǔ)言模型,文中的示例代碼簡(jiǎn)潔易懂,有需要的小伙伴可以了解下
    2025-02-02
  • 詳解在Azure上部署Asp.NET Core Web App

    詳解在Azure上部署Asp.NET Core Web App

    這篇文章主要介紹了詳解在Azure上部署Asp.NET Core Web App,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • 使用grpcui測(cè)試ASP.NET core的gRPC服務(wù)

    使用grpcui測(cè)試ASP.NET core的gRPC服務(wù)

    這篇文章介紹了使用grpcui測(cè)試ASP.NET core gRPC服務(wù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • vim vax 快捷鍵大全

    vim vax 快捷鍵大全

    這篇文章主要給大家匯總介紹了vim vax 快捷鍵大全的相關(guān)資料,需要的朋友可以參考下
    2016-07-07
  • ASP.NET Core自定義中間件如何讀取Request.Body與Response.Body的內(nèi)容詳解

    ASP.NET Core自定義中間件如何讀取Request.Body與Response.Body的內(nèi)容詳解

    這篇文章主要給大家介紹了關(guān)于在ASP.NET Core自定義中間件中如何讀取Request.Body與Response.Body的內(nèi)容,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用ASP.NET Core具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05

最新評(píng)論

邓州市| 双城市| 阜阳市| 莱阳市| 农安县| 芜湖县| 万山特区| 渝北区| 达日县| 张家川| 晋中市| 文水县| 永嘉县| 浦东新区| 乐昌市| 葵青区| 安宁市| 哈尔滨市| 敦化市| 体育| 韩城市| 册亨县| 深圳市| 尉氏县| 离岛区| 繁昌县| 上高县| 高碑店市| 山东| 双流县| 乳山市| 衡水市| 昭觉县| 阳山县| 方山县| 固镇县| 常州市| 札达县| 舟山市| 建水县| 景德镇市|