我有一些帶有循環(huán)的代碼:while(someVariable){ string url = "https://<domain>/<page>/etc.."; var response = await _httpHandler.GetAsync(url); // do something ...}我想阻止編譯器在每次循環(huán)迭代時(shí)創(chuàng)建新的字符串對(duì)象。最好的方法是什么 - 將 url 移到循環(huán)之外,或者簡(jiǎn)單地將 is 標(biāo)記為 const?(兩者之間有區(qū)別嗎?)
2 回答

Cats萌萌
TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊
不用擔(dān)心。!編譯器不會(huì)創(chuàng)建新的引用,因?yàn)?strong>字符串池。
字符串內(nèi)部池是一個(gè)表,其中包含對(duì)應(yīng)用程序中以編程方式聲明或創(chuàng)建的每個(gè)唯一文字字符串的單個(gè)引用。公共語(yǔ)言運(yùn)行時(shí) (CLR) 使用實(shí)習(xí)池來(lái)最大限度地減少字符串存儲(chǔ)需求。因此,具有特定值的文字字符串實(shí)例在系統(tǒng)中僅存在一次。

DIEA
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊
最簡(jiǎn)單的方法是將字符串移到循環(huán)之外。如果編譯器在啟用優(yōu)化時(shí)自動(dòng)執(zhí)行此操作,我不會(huì)感到驚訝。
無(wú)論哪種方式,字符串都會(huì)被放入字符串池中并重新使用。
- 2 回答
- 0 關(guān)注
- 151 瀏覽
添加回答
舉報(bào)
0/150
提交
取消