c#对象给对象赋值时的问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 00:45:44
namespace testoo
{
class Program
{

struct test
{
public int age;
}

static void Main(string[] args)
{
//值类型
test tt1;
test tt2;
tt1.age = 18;
tt2 = tt1;
tt2.age = 20;
Console.WriteLine(tt1.age.ToString()+tt2.age.ToString());

//引用类型
ceshi ce1 = new ceshi();
ceshi ce2 = new ceshi();
ce1.Age = 18;
ce2 = ce1;
ce2.Age = 20;
Console.WriteLine(ce1.Age.ToString()+ce2.Age.ToString());
Console.Read();
}
}

class ceshi
{
public int Age;
}
}
我是学习C#的新手,看了下书,不明白值类型和引用类型的区别,上面的代码第一次输出的是1820,第二次输出是2020
哪位高手能用通俗的语言解释一下,比如说出在内

结构体和类的区别就在这里,结构体的是值类型,而类是引用类型,所以结构体在用=赋值的时候,不是指针发生变化,而是值的变化,而引用类型的就只是内存的指针发生了变化,每一个变量其实都是引用,而不是有具体的值,他们只是指向内存中的某个未知。所以,第二题那里,c2=c1,也就是会所c2指向跟c1一样,这样的花,c2发生变化,c1也会跟着变。

值类型tt2 = tt1;
tt2是tt1的复制品,和他没关系。
引用类型ce2 = ce1;
ce2和ce1是一个对象,一个改变另一个也相应改变。