1、类和结构的区别

***用于个人学习,侵权望告知

类是引用类型,结构是值类型;

类使用堆存储,结构使用栈存储;

结构隐式继承自ValueType类,而且不能派生于任何其他类型,类可以继承自除ValueType以外的任何类;

结构是无法被继承的,普通的类则可以(除密封类[l1] );

所有结构成员默认都是public,而类的变量和常量数则默认为private(其它类成员默认都是public);

结构成员不能被声明为protected,而类成员可以;

结构的成员变量在声明时不能指定初始值,而类的成员变量在声明时可以赋初始值;

结构不能声明默认的构造函数(也就是不拥有参数的非共享构造函数),也不允许声明析构函数,而类无此限制;

结构变量不需要使用new运算符进行实例化,而类的实例必须使用new进行实例化;

结构变量随所在的方法体运行结束时自动被终止,而类的实例则是由CLR的内存回收进程加以终止,当内存回收进程检测到没有任何作用的类的实例时,就会调用类的Finalize方法来销毁类的实例。所谓销毁就是从内存中消除并回收所占用的内存单元;

当结构变量用作方法参数时,结构是通过传值方式从实参传递给形参的,不是作为引用传递的,而类的实例用作方法参数时,是典型的引用传递。


 [l1]为了避免滥用继承,提出了密封类的概念。密封类可以用来限制扩展性。如果密封了某个类,那么其他类不能从该类继承;如果密封了某个成员,则派生类不能重写该成员的实现。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值