type
status
date
slug
summary
tags
category
icon
password
概述
在C#中,持有对象的引用方式有两种,分为:强引用 以及 弱引用。
强引用(Strong Reference)保持对象活跃,直到没有任何强引用指向该对象时,对象才会被垃圾回收。
弱引用(Weak Reference)与之相对,是指不会阻止其引用的对象被垃圾回收器回收的一种特殊引用。弱引用不会影响对象的生命周期,对象可以随时被回收。
强、弱引用实现
强引用
在C#中,大多数对象的引用都是强引用。例如,当我们创建一个对象并将其赋值给一个变量时,这个变量就持有了一个强引用。只要这个强引用存在,垃圾回收器就不会回收该对象。
弱引用
C#提供了
WeakReference
和WeakReference<T>
两种方式来实现弱引用。WeakReference
类是非泛型的,适用于.NET Framework
和.NET Core
中的所有版本。
2.
WeakReference<T>
是一个泛型版本,它提供了类型安全的弱引用实现。这在.NET Framework 4.5
及以上版本中可用。弱引用用途
弱引用一般可用于下面这些情况:
- 当你需要引用对象但又不想阻止其被垃圾回收时。
- 在实现缓存机制时为了避免长时间持有对象引用。
总结
弱引用在C#中是内存管理的一个强大工具,它在保持对对象的引用的同时,允许垃圾回收器在必要时回收这些对象。合理使用弱引用可以在不牺牲性能的前提下提高应用程序的灵活性和效率,但对象生命周期的不确定性可能导致程序逻辑复杂化,管理起来比强引用更复杂。
- 作者:VyronLee
- 链接:https://vyronlee.com/article/487963d6-7168-4aa5-8318-bce3a5dfab23
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。