.NET面试题解析(01)-值类型与引用类型

本文详细解析.NET面试中关于值类型与引用类型的常见问题,包括它们的概念、内存结构、对象传递、参数传递方式,以及结构与类、委托、枚举、堆栈的区别等。并探讨了结构体中包含引用类型时内存存储的情况。
摘要由CSDN通过智能技术生成

  常见面试题目:

1. 值类型和引用类型的区别?

2. 结构和类的区别?

3. delegate是引用类型还是值类型?enum、int[]和string呢?

4. 堆和栈的区别?

5. 什么情况下会在堆(栈)上分配数据?它们有性能上的区别吗?

6.“结构”对象可能分配在堆上吗?什么情况下会发生,有什么需要注意的吗?

7. 理解参数按值传递?以及按引用传递?

8. outref 的区别与相同点?

9. C#支持哪几个预定义的值类型?C#支持哪些预定义的引用类型?

10. 有几种方法可以判定值类型和引用类型?

11. 说说值类型和引用类型的生命周期?

12. 如果结构体中定义引用类型,对象在内存中是如何存储的?例如下面结构体中的class类 User对象是存储在栈上,还是堆上?

public struct MyStruct 
{ 
    public int Index; 
    public User User; 

  认识值类型与引用类型

万变不离其宗,只要搞清楚值类型和引用类型的原理,上面所有题目就都迎刃而解了。

微笑 基本概念

CLR支持两只类型:引用类型值类型。这是.NET语言的基础和关键,他们从类型定义、实例创建、参数传递,到内存分配都有所不同。虽然看上去简单,但真正理解其内涵的人却好像并不多。

图片引用

下图清晰了展示了.NET中类型分类,值类型主要是一些简单的、基础的数据类型,引用类型主要用于更丰富的、复杂的、复合的数据类型。

大笑 内存结构

值类型和引用类型最根源的区别就是其内存分配的差异,在这之前首先要理解CLR的内存中两个重要的概念:

Stack 栈:线程栈,由操作系统管理,存放值类型、引用类型变量(就是引用对象在托管堆上的地址)</

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值