почему GetValues ​​принимает массив объектов в качестве входных данных, а не возвращает новый массив - PullRequest
0 голосов
/ 03 марта 2010

Класс SqlDataReader предлагает метод с именем GetValues.Что мне интересно в этом методе, так это то, что он принимает object[] в качестве входных данных и возвращает int числа значений, скопированных в массив.чем вернуть новый массив?

Ответы [ 2 ]

3 голосов
/ 03 марта 2010

Просто предположение, но, передавая массив, вы можете многократно использовать один и тот же массив. Создание массива занимает время. Не так много времени, но если вы перебираете миллионы результатов, это может быть ощутимым приростом производительности за счет повторного использования одного и того же массива. Создание нового массива каждый раз также приведет к тому, что сборщик мусора будет выполнять больше работы, чем необходимо.

2 голосов
/ 03 марта 2010

Согласно документации :

Вы можете передать массив Object, который содержит меньше, чем количество столбцов, содержащихся в результирующей строке. Только тот объем данных, который содержит массив Object, копируется в массив. Вы также можете передать массив Object, длина которого превышает количество столбцов, содержащихся в результирующей строке.

Это позволяет вызывающему абоненту полностью контролировать распределение памяти, а также легко контролировать количество запрашиваемых столбцов.

...