结构是值类型,而类是引用类型,运行一下下面的例子using System;class ClassDemo
{
    public int x;
}struct StructDemo
{
    public int x;
}class StructAndClass
{
    public static void Main()
    {
        ClassDemo obj1 = new ClassDemo();
        obj1.x = 10;
        ClassDemo obj2 = obj1;
        obj1.x = 20;
        Console.WriteLine(obj2.x);        StructDemo o1 = new StructDemo();
        o1.x = 10;
        StructDemo o2 = o1;
        o1.x = 20;
        Console.WriteLine(o2.x);
    }
}
    尽管对两种类型的变量执行了相同的操作,但结果是不同的。
    对象是引用类型。在把对象赋给变量时,实际上是把带有一个指针的变量赋给了该指针指向的对象。在实际代码中,指针是内存中的一个地址。在这种情况下,地址是内存中该对象所在的一个位置。在把第一个对象引用赋给类别为ClassDemo的第二个变量时,实际上是复制了这个地址。这样两个变量就包含同一个对象的指针。
结构是值类型。其变量并不是包含结构的指针,而是包含结构本身。在把第一个结构赋给类型为StructDemo的第二个变量时,实际上是把第一个结构的所有信息复制到另一个结构中。这个过程与简单变量类型如int是一样的。最终的结果是两个结构类型变量包含不同的结构。