Listのラッパーを作成して、max minの計算、一部の要素からの特定の値の抽出など、特定の処理を実行しようとしています。
私は
public struct datum {
public UInt32[] chan;
public UInt64 sample_number;
public UInt32 time;
public UInt32 source_sector;
}
public class dataSet : List<datum> {
bool dirty=true;
....
}
メソッドは通常次のようになります(データが変更された場合にのみデータを解析し、リストが変更されていない場合に再利用するために値をキャッシュするmax()/ min()関数があるため、リストが変更されたかどうかを知りたい変更されました)
public new void Add(datum x ) {
base.Add(x);
this.dirty = true;
}
ただし、コンストラクターの作成方法がわかりません。この構文は機能しません。このタイプの動作を取得するにはどうすればよいですか?
public dataSet(int count) {
this = (dataSet) new List<datum>(count);
}
私もこのコンストラクターを持っています。これはテストされていませんが、正常に動作しているようです(コンパイルエラーはありません)。
public dataSet(List<datum> data) {
this.AddRange(data);
}
コレクションを使用する必要があり、速度を上げるためにリストを使用するという投稿に出くわしました。スピードが必要ですが、なぜコレクションが優れているのかわかりません。
- アップデート -
これほど効率的に最大/最小を同時に計算するものを作成できないため、linqを使用したくありません。
public void recalculateMaxMin() {
foreach (var d in data) {
for (int i = 0; i < 16; i++) {
if (d.chan[i] > max[i]) max[i] = d.chan[i];
if (d.chan[i] < min[i]) min[i] = d.chan[i];
}
}
}
Thnx