我知道 DataTable
当我们插入/获取数据时正在使用装箱/拆箱。如果我们有大量仅包含 int
的数据例如,使用某种通用的 DataTable
不是更快吗? ,比方说 MyDataTable<int>
,这将导致避免装箱/拆箱开销?
最佳答案
字符串是引用类型,因此没有装箱开销:它们从不装箱。 DataTable 确实有很多开销——这是能够表示任意列模型以及约束、更改跟踪等的成本。为了获得最佳性能,POCO 模型很难被击败。例如:
public class Customer {
public int Id { get; set; }
public string Name { get; set; }
// ...
}
有很多 ORM 和微型 ORM 可以使用这种类型的模型。
但是请注意,在 DataTable 中,值存储在类型正确的数组中。整数存储在 int[] 中——这是通过将数据存储在列而不是行中来实现的。装箱仅在将数据输入/输出 DataTable 时发生。
关于C# DataTable vs 一些通用的集合性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16989868/