对象是引用类型还是值类型?

2024-03-20

我仍然有疑问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的类型是你在里面装的东西。它既可以是引用类型,也可以是值类型。这是关于你装在里面的东西。我对吗?


它是一个引用类型

用字符串做一个例子并不是很有启发性,因为字符串是also引用类型(原样SampleClass, 明显地);你的例子包含零“拳击”。

如果对象是引用类型那么为什么 obj2 值仍然是“OldString”

为什么不会呢?当您创建一个新字符串,这不会更改旧引用以指向新字符串。考虑:

 object obj1 = "OldString";
 // create a new string; assign obj1 the reference to that new string "OldString"

object obj2 = obj1;
 // copy the reference from obj1 and assign into obj2; obj2 now refers to
 // the same string instance

 obj1 = "NewString";
 // create a new string and assign that new reference to obj1; note we haven't
 // changed obj2 - that still points to the original string, "OldString"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对象是引用类型还是值类型? 的相关文章

随机推荐