C#自学笔记之结构体和类的比较

结构体和类的比较

  1. 类是引用类型,结构是值类型。
  2. 结构是隐式密封的,它们不能被继承。
  3. 结构类型变量不能为null
  4. 两个结构体变量不能引用同一对象。
  5. 结构体成员不可以初始化,类成员可以。
  6. 当结构体作为返回值时,讲创建他的副本并从函数成员中返回
  7. 当结构体作为值参数时,将创建实参结构的副本参与方法执行中
  8. 可以把结构用作ref和out参数,传入方法的是该结构的一个引用。
    class SimpleClass
    {
        public int x;
        public int y;
    }
    struct SimpleStruct
    {
        public int x;
        public int y;
    }
    class Program
    {
        static void Main(string[] args)
        {
            SimpleClass simpleClass_1 = new SimpleClass();
            SimpleClass simpleClass_2 = null;

            SimpleStruct simpleStruct_1 = new SimpleStruct();
            SimpleStruct simpleStruct_2 = new SimpleStruct();

            simpleClass_1.x = simpleStruct_1.x = 1;
            simpleClass_1.y = simpleStruct_1.y = 2;

            simpleClass_2 = simpleClass_1;
            simpleStruct_2 = simpleStruct_1;

            Console.WriteLine("simpleClass_2 = simpleClass_1:{0}\n", (simpleClass_2 == simpleClass_1));

            simpleClass_1.x = 10;
            simpleStruct_1.x = 10;

            Console.WriteLine("simpleClass_1:x:{0}\ty:{1}",simpleClass_1.x,simpleClass_1.y);
            Console.WriteLine("simpleClass_2:x:{0}\ty:{1}\n", simpleClass_2.x, simpleClass_2.y);
            Console.WriteLine("simpleStruct_1:x:{0}\ty:{1}", simpleStruct_1.x, simpleStruct_1.y);
            Console.WriteLine("simpleStruct_2:x:{0}\ty:{1}", simpleStruct_2.x, simpleStruct_2.y);

            Console.ReadKey();
        }
    }

输出结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值