關於字串駐留

2021-06-07 20:59:26 字數 849 閱讀 7065

首先看幾個例子:

示例1:

static

void main()

示例2:

static

void main()

示例3:

public

const

string s1 = "abc";

static

void main()

示例4:
public

static

string s1 = "abc";

static

void main()

示例1的執行結果:

"abc"

示例2的執行結果:

null

示例3的執行結果:

null

示例4的執行結果:

"abc"

我對示例1的結果非常疑惑,什麼時機才改變intern pool 的hashtable?按**執行的先後順序來講,"abc"應該是沒有被駐留才對,但結果剛好相反。

另外,對示例3、4. 是否說明

const

string s1="abc" 不會觸發字串駐留池的改變,

static

string s1 = "abc" 才會引起。這兩種情況下的string在記憶體中的儲存位置是否有區別?

字串駐留備忘

下面是個人的練習 字串拘留練習 by mcjeremy 宣告s1時,拘留池中沒有該字串,因此將它放進去 放進去後,string.isintered s1 將返回該字串值 string s1 abc123 宣告s2時,由於拘留池中已經有該字串存在,因此不再分配記憶體 s2和s1將指向同乙個引用 str...

C 中字串駐留技術

msdn概念 公共語言執行庫通過維護乙個表來存放字串,該錶稱為拘留池,它包含程式中以程式設計方式宣告或建立的每個唯一的字串的乙個引用。因此,具有特定值的字串的例項在系統中只有乙個。上面的概念不好理解,我們還是從基礎說起 一 眾所周知,c 中的string是乙個引用型別,string物件存放在堆上,而...

Python隱藏特性 字串駐留 常量摺疊

下面是python字串的一些微妙的特性,絕對會讓你大吃一驚。案例一 a some string id a 140420665652016 id some string 注意兩個的id值是相同的.140420665652016案例二 a wtf b wtf a is b true a wtf b wt...