0

SqlDataReader 类提供了一个名为 GetValues 的方法。我对这个方法感到好奇的是,它接受一个object[]作为输入并返回int复制到数组中的值的数量。

知道为什么该方法是这样设计的,而不是返回一个新数组吗?

4

2 回答 2

3

只是一个猜测,但通过传入一个数组,您可以一遍又一遍地重用同一个数组。创建数组需要时间。不是很多时间,但是如果您要迭代数百万个结果,则可以通过重用相同的数组来获得可衡量的性能提升。每次创建一个新数组也会导致 GC 做更多必要的工作。

于 2010-03-03T17:33:52.857 回答
2

根据文档

您可以传递一个 Object 数组,该数组包含的列数少于结果行中包含的列数。仅将 Object 数组保存的数据量复制到数组中。您还可以传递一个长度大于结果行中包含的列数的对象数组。

这允许调用者完全控制内存分配,也可以轻松控制请求的列数。

于 2010-03-03T17:07:55.490 回答