我仍然懷疑object
。它是任何類別的主要基類。但是它是引用類型還是值類型。或者像這些行爲中的哪一個呢?我需要澄清這一點。我很難理解這一點。對象是引用類型還是值類型?
object obj1 = "OldString";
object obj2 = obj1;
obj1 = "NewString";
MessageBox.Show(obj1 + " " + obj2);
//Output is "NewString OldString"
在這種情況下,它的行爲就像一個值類型。如果對象是引用類型,那麼爲什麼obj2的值仍然是「OldString」
class SampleClass
{
public string Text { get; set; }
}
SampleClass Sample1 = new SampleClass();
Sample1.Text="OldText";
object refer1 = Sample1;
object refer2 = refer1;
Sample1.Text = "NewText";
MessageBox.Show((refer1 as SampleClass).Text + (refer2 as SampleClass).Text);
//OutPut is "NewText NewText"
在這種情況下,它的作用就像引用類型
我們可以推斷,object
的類型是你裏面框什麼。它既可以是引用類型也可以是值類型。這是關於你在裏面的東西。我對嗎?
使用字符串作爲一個例子是一個超級壞主意。字符串是引用,但它也是不可變的。當你創建一個新的字符串時,它首先查看字符串池,看看它是否已經存在。字符串是一個超級特例,不要用它來解釋引用和值類型的概念。 – Markus
「當你創建一個新的字符串時,它首先查看字符串池,看看它是否已經存在。」 - 那是......不是真的。它將檢查*一些情況*,但不是在一般情況下。至於爲什麼我首先使用了字符串:*因爲這個問題是專門討論string *的。 –