在阅读源代码的同时阅读 Roslyn on GitHub,我注意到了很多用过的东西 ObjectPool<T>
类。它用于减少内存开销。
它在内部使用 数组 存储池化对象。
我不明白的是它为什么使用一个名为的私有结构 Element
包含单个类型的字段 T
作为数组元素,而不仅仅是使用 T
。
这是出于对性能的关注吗?内存开销?
在阅读源代码的同时阅读 Roslyn on GitHub,我注意到了很多用过的东西 ObjectPool<T>
类。它用于减少内存开销。
它在内部使用 数组 存储池化对象。
我不明白的是它为什么使用一个名为的私有结构 Element
包含单个类型的字段 T
作为数组元素,而不仅仅是使用 T
。
这是出于对性能的关注吗?内存开销?
这可能是出于性能原因。看到 这篇文章由Jon Skeet撰写。
总而言之,值类型数组在C#中是不变的,这意味着运行时可以避免在数组中存储项时进行兼容性检查。在文章中,Skeet先生使用了与您描述的类似的包装器结构,并显示了对阵列的写入性能的改进。
这可能是出于性能原因。看到 这篇文章由Jon Skeet撰写。
总而言之,值类型数组在C#中是不变的,这意味着运行时可以避免在数组中存储项时进行兼容性检查。在文章中,Skeet先生使用了与您描述的类似的包装器结构,并显示了对阵列的写入性能的改进。