Класс SqlDataReader предлагает метод GetValues. То, что мне интересно, это то, что он принимает object[]
в качестве входных данных и возвращает int
количество значений, скопированных в массив.Почему GetValues принимает массив объектов в качестве ввода, а не возвращает новый массив.
Любая идея, почему метод был разработан таким образом, вместо того, чтобы возвращать новый массив?
достаточно справедливо, однако почему бы не передать целое число в качестве предельного значения и вернуть объект [] этой длины. объект [] myValues = sqlDataReader.GetValues (3); –
@Ralph: ключ заключается в том, что вызывающий абонент управляет распределением памяти. Если функция возвращает массив, то это использование памяти контрольной памяти. Один конкретный пример - повторное использование одного и того же массива для каждой строки, а не получение нового массива для каждой строки. –
@John: Думаю, я ожидаю, что GetValues () будет вести себя как Directory.GetFiles (pattern); Вы возвращаете массив строк. Теперь в этом случае у них нет выбора, поскольку вызывающий может не знать, сколько файлов возвратит метод, что технически не так с sqldatareader. –