摘要:
自从.NET Framework 2.0引入泛型之后,对集合的使用就开创了新的局面。首先我们不用考虑类型是否安全,利用泛型以及对泛型参数的约束完全可以保障这一点;其次,集合元素不会因为频繁的Boxing和Unboxing而影响集合遍历与操作的性能。泛型带来的这两点好处毋庸置疑。在Dictionary<TKey, TValue>中,除了字符串,我们普遍会使用值类型作为它的key,例如int类型。而枚举类型作为一种值类型,在某些时候特别是需要位操作的时候,也会经常用作key。问题就出现在这里。我们知道,Dictionary的key必须是唯一的标识,因此Dictionary需要对 key 阅读全文
摘要:
当我们在系统用到某些占用内存较多的大对象,且该对象并不会被频繁使用(例如缓存场景)时,若考虑性能因素,或许我们可以选择使用弱引用(WeakReference)对象。弱引用对象就像是对象之中的“无间行者”,行走于“活动”与“非活动”状态之间。即使该对象存在引用,垃圾回收器仍然可以对其进行回收,这使得我们对该对象的调用始终存在一种不可预知性,除非我们通过Target属性赋给对象,以创建强引用,否则我们始终处于这种忧虑之中。这让我们常常感到左右为难,但在一些追求性能的场景下,使用弱引用未尝不是明智的选择。只要我们遵循一定的原则,例如在每次调用弱引用对象时,首先判断其是否为null,就不会存在太大的问 阅读全文