我正在尝试围绕 List 创建一个包装器来做一些我想要的特定事情,例如计算最大最小值、从某些元素中提取特定值等。
我从
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);
}
我看到一篇文章说你应该使用 Collection 并且 List 用于提高速度。虽然我需要速度,但我不确定为什么 Collection 会更好?
- 更新 -
我不想使用 linq,因为您无法像这样高效地创建同时计算 max/min 的东西:
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];
}
}
}
谢谢