我試圖創建一個圍繞名單的包裝做我想做一些具體的事情,如計算最大最小,從一些元素提取特定值等繼承一個List <>在C#和重寫構造
我開始
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;
....
}
的方法通常是這樣的(我想)知道,如果列表中已被修改,因爲我有一個最大(/分鐘()函數,只有分析數據時,它已被修改並且如果該列表未被修改則緩存該值以供重用)
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使用爲了速度。雖然我需要速度,但我不確定爲什麼收藏會更好?
--UPDATE--
我不想使用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
我沒有能找到任何INotifyCollectionChanged和一個List <>的例子 - 你能指點我一個還是提供一個?這將是一個理想的實現 – reza
親愛的,看看http://msdn.microsoft.com/en-us/library/ms668604.aspx和http://www.codeproject.com/Articles/42536/List- vs-ObservableCollection-vs-INotifyPropertyCha – Rikki
INotifyCollectionChanged是一個名爲「CollectionChanged」的事件的接口。 ObservableCollection已經實現了該接口。你應該只是簡單地使用它。玩的開心。 ;) –
Rikki