01、类与结构的区别

由于类是引用类型,因此类对象的变量引用该对象在托管堆上的地址。

由于结构是值类型,因此结构对象的变量具有整个对象的副本。

如果不能理解的同学,看看这运行结果就明白了!

 

细心的同学应该会发现:

## 红色框(类)第二个对象覆盖了第一个对象(两个类型比较:True)。由于类是引用类型,因此将同一类型的第二个对象分配给第一个对象,则两个变量都引用该地址的对象。也就是 类 所谓的引用类型

## 蓝色框(结构)第二个对象未覆盖第一个对象(两个类型比较:False)。由于结构是值类型,因此结构对象的变量具有整个对象的副本。

实践代码如下:

class Program
    {
        static void Main(string[] args)
        {
            PersonA personA = new PersonA("lsy", 25);

            PersonA personA1 = personA;
            personA1.Name = "lishuyiba";
            personA1.Age = 26;

            Console.WriteLine(personA.Name);
            Console.WriteLine(personA.Age);

            Console.WriteLine(personA1.Name);
            Console.WriteLine(personA1.Age);



            Console.WriteLine("#######################################");

            PersonB personB = new PersonB("lsy", 25);

            PersonB personB1 = personB;
            personB1.Name = "lishuyi";
            personB1.Age = 27;

            Console.WriteLine(personB.Name);
            Console.WriteLine(personB.Age);

            Console.WriteLine(personB1.Name);
            Console.WriteLine(personB1.Age);

            Console.ReadKey();
        }
    }

    class PersonA
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public PersonA(string name, int age)
        {
            Name = name;
            Age = age;
        }
    }
    struct PersonB
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public PersonB(string name, int age)
        {
            Name = name;
            Age = age;
        }
    }

  

posted @ 2017-11-15 02:26  李树逸  阅读(336)  评论(0编辑  收藏  举报