我知道字符串inmutable,曾經創造了我們無法改變它,我讀過,如果我們創建一個新的字符串對象,我們分配一個值,然後我們另一個值分配到相同的字符串對象在內部實際上有一個是對象創建並賦值爲新值。比方說,我有:字符串如何在c#中工作?
string str = "dog";
str = "cat";
如果我寫Console.WriteLine(str);
返回cat
。 所以內部有兩個對象?但他們有相同的名字?它是如何工作的?我對谷歌做了一些研究,但是我還沒有找到足夠令人信服的東西,所以我可以澄清我對此的看法。 我知道字符串是引用類型,所以我們在堆棧中有一個對象引用堆中的值,在這種情況下發生了什麼?(請參閱上面的代碼)。
我已經上傳圖片,道歉我,如果我錯疊的想法,這就是爲什麼我問這個問題堆。 圖片是否反映了第一行代碼(string str = "dog";
)中發生的情況?然後在第二行代碼中會發生什麼?堆中的dog
值發生了變化?然後創建一個新的對象引用它?那麼之前的對象會發生什麼?他們有相同的名字嗎? 我很抱歉有這麼多問題,但我認爲這對正確理解這一點非常重要,並且要知道幕後發生了什麼...
我很難選擇一個答案,因爲你所有的答案都非常具有描述性,現在我已經澄清了這件事,謝謝! – AlexGH