Asp.net之 类和结构的区别

1、类是引用类型,结构则是值类型。因此结构是放在栈(Stack)里,类则仅仅是将引用地址存放在栈里,而具体的值则存放在堆(heap)里。

2、据第1点可以得出结论,那就是类对象通常用来传递大数据,而结构对象则用来传递小数据。

3、类可以继承和被继承,而结构则不支持。但结构和类一样可以继承自接口。

4、结构对象不能像类对象一样赋值为null。

5、结构没有析构器。类有构造和析构函数。

6、结构不能像类一样定义为抽象的。

7、在结构中不能重写方法,除非是object类型的如下方法:

  • Equals()

  • GetHashCode()

  • GetType()

  • ToString()

  •       若要让结构具有多态特性,可以让其实现接口。

    8、在类中定义的事件是线程安全的,而结构则不是。

    9、结构总是具有一个默认的公共无参构造函数,但却不能像类一样定义私有的无参构造函数(结构也不能再定义公共的无参构造函数,这与类不相同)。

    10、类中的静态构造函数会被调用,而结构却不能。因此在结构中定义的静态构造函数,虽然可以编译通过,但却没有价值。

    11、结构不能像类一样定义volatile字段。volatile字段主要用于并发,它相当于方法体的lock。

    12、可以对结构类型使用sizeof,对类则不行。

    13、类的字段会被自动初始化为0/false/null,而结构则不能。

    14、在结构中不能直接对字段初始化,而类则可以。

    15、结构和类对于System.Object.Equals()方法的体现是不相同的。

     

    ==============Test 01=============

     

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值