.net 面试题0001 - 类与结构

class 和 struct 有什么区别 

class 用以定义一个类,而struct 用以声明结构体 ;  

首先复习一下修饰符知识

public : 公共访问 , 对访问没有限制 ;

private : 私有访问 , 仅在声明它们的类和结构体中才可访问 ;

internal : 同一程序集下可访问 , 如 : 某解决方案下存在多个项目 项目A中 类a为internal修饰类 , 则类a仅供于项目A内调用 ;

protected : 本身不可被访问 但可通过其子类进行访问 ;

abstract : 用于声明虚类 , 限定某个类只能是其他类的基类 ; 

partial : 局部类的声明 , 即此文件中的这个类仅是这个类的一部分 (比如这个类还有另一个部分在另一个文件上等情形) 原则是此类的所有局部类需在相同的命名空间内 ;

sealed : 此类不能被继承 ;

static : 静态类 , 不能被实例化 ;

那么这个问题就变成了

结构体和类的区别

类的对象存储在堆空间中 , 结构体存储在栈中 . 堆的空间大但访问速度慢 , 栈则相反 ;

在某些轻量级应用上用结构体替代类可以提升效率 , 但也无法滥用 因为结构体的限制就摆在那里...

比如当对象表现抽象和多层次时 , 结构体就无法搞定了

类用不到栈么 ?

并不是 , 类也需要将引用保存在栈中 .

总结一下

类是引用类型 , 结构是值类型 (int/ double/ bool and so on...);

结构不支持继承 (因为他本身已经有一个继承了 System.ValueType);

结构不能声明默认的构造函数 (因为他本身默认已经有一个了);

结构体中声明的字段无法赋予初值 ;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AiolCN

ヾ(≧ ▽ ≦)ゝ

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值