SqlDataReaderクラスは、GetValuesと呼ばれるメソッドを提供します。このメソッドについて私が興味を持っているのは、入力としてを受け取り、配列にコピーされた値の数をobject[]
返すことです。int
新しい配列を返すのではなく、メソッドがそのように設計された理由はありますか?
推測ですが、配列を渡すことで、同じ配列を何度も再利用できます。配列の作成には時間がかかります。それほど時間はかかりませんが、数百万を超える結果を繰り返す場合は、同じアレイを再利用することで、測定可能なパフォーマンスの向上が得られる可能性があります。毎回新しいアレイを作成すると、GCは必要以上の作業を行うことになります。
結果の行に含まれる列の数より少ない数を含むオブジェクト配列を渡すことができます。オブジェクト配列が保持するデータ量のみが配列にコピーされます。結果の行に含まれる列の数よりも長い長さのオブジェクト配列を渡すこともできます。
これにより、呼び出し元はメモリ割り当てを完全に制御でき、要求される列の数も簡単に制御できます。