我需要為List<int, string>. 我嘗試了使用靜態 ID 的方法:
for (int i = 0; i < sen.Length; i )
{
mySentences.Add(new Values { ID = i, Sentence = sen[i] });
}
但是這種方法存在一些問題。我想從串列中間洗掉例如專案,然后被洗掉專案下的每個專案都應將其 id 更改為 (n - 1)。那么我該如何申請這個動態id呢?
uj5u.com熱心網友回復:
您可以使用此方法在每次洗掉時重新索引您的串列。
public List<Values> ReindexAfterDelete(List<Values> sen)
{
for (int i = 1; i<= sen.Count; i ) {
sen[i-1].ID = i;
}
return sen;
}
uj5u.com熱心網友回復:
您可以在串列中存盤的每個專案中添加對串列的參考。如果您訪問 ID 屬性,您可以通過以下IndexOf方法獲取串列的索引List<T>:
public class Sentence
{
private List<Sentence> list;
public int ID
{
get
{
return list.IndexOf(sentence);
}
}
public Sentence(List<Sentence> list)
{
this.list = list;
}
}
用法是:
List<Sentence> mySentences = new List<Sentence>();
Sentence sentence = new Sentence(mySentences)
mySentences.Add(sentence );
這種方法有兩個缺點:首先,ID屬性的每次訪問都是 O(n),如果您有一個包含許多專案的串列,這可能會導致性能問題。其次,如果您將相同的句子兩次添加到串列中,它將不起作用。
另一方面,最大的優勢是在每次插入、洗掉等操作后更新 ID 不會有任何問題。你可以相信ID總是正確的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/427615.html
