2

.net でデータセットを再利用するのは良い考えですか? つまり...グリッドビューをループする次のコードがあります

For Each row in GridView
  ds = New DataSet
  ds.ReadXML(GetStream(row.Field))
  ... export the dataset
Next

ループで行っていることは、DataSet の新しいインスタンスを作成することです。ds.Clear() を呼び出して、ds.ReadXML() 経由で再利用することはできませんか?

4

3 に答える 3

2

他のパフォーマンスの考慮事項と再利用を比較検討します。一般的に言えば、必要になるまでこのような最適化は行いません。そして、それが必要であることを証明する数字がある場合にのみ。

于 2010-02-24T21:09:45.090 に答える
2

セマンティクスは異なります。DataSet.Clearすべてのデータ (行) を削除しますが、スキーマ (テーブルとリレーション) は保持します。

サンプルでは、​​テーブルが ReadXml メソッド (スキーマとデータを読み取ることができる) から作成されているように見えます。

DataSet.Clearすべての Xml ドキュメントが同じスキーマを持っていることが確実である限り、おそらく機能しますが、使用Newはより堅牢であり、意図をより適切に表現します。

ただし、次のサンプルのようにデータのみを読み取る場合はDataSet.Clear、スキーマを繰り返し生成する必要がないため、より適切な選択になる可能性があります。

ds = New DataSet 
... code to create the schema (Tables, Columns, Relations)

For Each row in GridView 
  ds.ReadXML(GetStream(row.Field), XmlReadMode.IgnoreSchema) 
  ... export the dataset 
  ds.Clear
Next 
于 2010-02-24T21:10:33.613 に答える
1

それができるかもしれませんが、オブジェクトの作成は非常に安価であり、副作用のリスクがないため、新しいオブジェクトを作成しない理由はありません。

于 2010-02-24T21:11:48.213 に答える