我仍然有疑问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(使用前将#替换为@)