質問

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

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

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

役に立ちましたか?

解決

セマンティクスは異なります。 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 

他のヒント

あなたは他のパフォーマンスを考慮して再利用を量ります。一般的に、彼らは必要になるまで私はこのような最適化をしない話します。そして、私はそれが必要だということを証明するために数字を持っている場合にのみます。

あなたはそれを行うことができるかもしれないが、オブジェクトの作成がとても安価ですし、副作用の危険性を持っていない、新しいオブジェクトを作成しない何らかの理由がありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top