namespace ConsoleApplication2
{
class Program
{
public int val;
}
struct myStrut
{
public int val;
}
class Class1
{
static void Main(string[] args)
{
Program objectA=new Program();
Program objectB = objectA;
objectA.val = 10;
objectB.val = 20;
myStrut structA = new myStrut();
myStrut structB = structA;
structA.val = 30;
structB.val = 40;
Console.WriteLine("objectA.val={0}", objectA.val);
Console.WriteLine("objectB val{0}", objectB.val);
Console.WriteLine("structA.val={0}", structA.val);
Console.WriteLine("structB.val={0}", structB.val);
}
}
}
为什么结果输出是
Console.WriteLine("objectA.val={0}", objectA.val);
Console.WriteLine("objectB val{0}", objectB.val);这2个的结果都是20
{
class Program
{
public int val;
}
struct myStrut
{
public int val;
}
class Class1
{
static void Main(string[] args)
{
Program objectA=new Program();
Program objectB = objectA;
objectA.val = 10;
objectB.val = 20;
myStrut structA = new myStrut();
myStrut structB = structA;
structA.val = 30;
structB.val = 40;
Console.WriteLine("objectA.val={0}", objectA.val);
Console.WriteLine("objectB val{0}", objectB.val);
Console.WriteLine("structA.val={0}", structA.val);
Console.WriteLine("structB.val={0}", structB.val);
}
}
}
为什么结果输出是
Console.WriteLine("objectA.val={0}", objectA.val);
Console.WriteLine("objectB val{0}", objectB.val);这2个的结果都是20
Program objectB = objectA; 这是把对象a的引用赋给了对象b ,但他们都是指向同一个地址的。
而结构是值类型的,赋值后不会改变原来的数值