gpt4 book ai didi

.net - DataTables 和 LINQ 中的装箱/拆箱

转载 作者:行者123 更新时间:2023-12-02 01:20:35 29 4
gpt4 key购买 nike

假设我有这样的基于内存的数据表:

DataTable dt = new DataTable();
dt.Columns.Add("c1", System.Type.GetType("System.Double"));
dt.Columns.Add("c2", System.Type.GetType("System.Double"));
...

DataRow row = dt.AddRow();
row["c1"] = 1;
row["c2"] = 2;
...

然后我查询这个表:

List<DataRow> rows = (from r in table where (double)r["c1"] < 2.0 select r).ToList();

在探查器中我看到它创建了很多 double 。我认为它在某种程度上与比较有关。

有什么想法可以摆脱这种不必要的内存分配吗?

我使用 .NET 4、VS 2010、C#。

最佳答案

这里的底层存储位于类型化数组中(在本例中是在 DoubleStorage 类中),但所有访问都通过 object 进行,因为没有通用 API。除非切换到没有 DataTable 的基于类的模型,否则无法避免装箱。

关于.net - DataTables 和 LINQ 中的装箱/拆箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5091125/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com