我知道 .NET 中的 String 是 Object 的子类,而 .NET 中的 Objects 是引用类型。因此,下面的代码让我有点困惑。你能帮我理解其中的区别吗?谢谢
我声明了一个名为 MyInt 的类:
class MyInt
{
int i;
public int number
{
get { return i; }
set { i = value; }
}
public override string ToString()
{
return Convert.ToString(i);
}
}
然后是下面的代码:
MyInt a = new MyInt();
MyInt b = new MyInt();
a.number = 5;
b.number = 7;
b = a;
a.number = 9;
Console.WriteLine(a.ToString());
Console.WriteLine(b.ToString());
产量:
9
9
我理解这是因为这是一个 Object = Reference Type ,所以 a 和 b 现在引用堆上的同一个对象。
但是这里会发生什么?
string a1;
string b1;
a1 = "Hello";
b1 = "Goodbye";
b1 = a1;
a1 = "Wazzup?";
Console.WriteLine(a1);
Console.WriteLine(b1);
这产生:
Wazzup?
Hello
String 是一个被区别对待的对象吗?