1. 程式人生 > >C#面向對象9 字符串

C#面向對象9 字符串

mage 發現 重新 bsp clas image 字符 程序 內存

1.字符串的不可變性

當你給一個字符串重新賦值之後,老的值並沒有銷毀,而是重新開辟了一塊空間(堆)存儲新的值。

**當程序結束後,GC掃描整個內存,如果發現有的空間沒有被指向,則立即把它銷毀。

示意圖:值類型和引用類型在內存中的存儲

技術分享圖片

示意圖:s1和s2 在棧中存儲著相同的地址,這個地址指向堆中的"張三";s1重新賦值“123”,會在堆中開辟一塊新的空間存儲“123”,然後棧中的s1存儲的地址改變!

技術分享圖片

示意圖:驗證s1="123",s2="123"在棧中存放的內存都是堆中同一個地址

技術分享圖片

2.

C#面向對象9 字符串