NET面试题及详细答案.docxVIP

  • 7
  • 0
  • 约9.32千字
  • 约 11页
  • 2026-03-12 发布于河北
  • 举报

.NET面试题及详细答案

一、基础语法与核心概念

1.请说明值类型和引用类型的区别,以及在.NET中的存储位置

答案:

核心区别在于存储位置和内存管理方式:

值类型:继承自System.ValueType,存储在栈(Stack)中,直接存储数据本身。常见类型有int、float、bool、struct、enum等。栈内存由系统自动分配和释放,效率高,超出作用域后立即回收,不会产生内存碎片。

引用类型:继承自System.Object,存储在堆(Heap)中,栈中仅存储指向堆内存的引用地址。常见类型有string、class、interface、数组等。堆内存由.NET垃圾回收器(GC)管理,分配和回收成本略高,需等待GC触发才能释放,可能存在内存泄漏风险(如未释放非托管资源)。

补充:string虽为引用类型,但具有不可变性,修改时会创建新实例,本质是对char数组的封装,特殊场景下会用到字符串常量池优化内存。

2.委托和事件的关系是什么?请举例说明委托的实际用途

答案:

委托是.NET中的类型安全函数指针,本质是封装了方法的引用,可实现“将方法作为参数传递”;事件是基于委托的封装,遵循观察者模式,用于解耦发布者和订阅者,限制了外部对委托的直接操作(仅允许订阅/取消订阅,不能直接调用委托)。

关系:事件依赖委托作为“事件处理方法的签名约定”,发布者定义事件(基于委托),订阅者

文档评论(0)

1亿VIP精品文档

相关文档