为什么GetValues将对象数组作为输入而不是返回一个新数组

时间:2010-03-03 17:04:33

标签: .net ado.net sqlclient

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

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

2 个答案:

答案 0 :(得分:3)

只是一个猜测,但通过传入一个数组,您可以反复重复使用相同的数组。创建数组需要时间。不是很多时间,但是如果你在数百万个结果上进行迭代,那么通过重用相同的数组可以获得可衡量的性能提升。每次创建一个新数组也会使GC更加有效。

答案 1 :(得分:2)

According to the documentation

  

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

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