我有對象的列表:不能更新列表C#中的單個項目(對象)
List<NPortfolio> Portfolios = new List<NPortfolio>();
Portfolios.Add(new NPortfolio(1, "1", emptyPositions));
Portfolios.Add(new NPortfolio(2, "2", emptyPositions));
現在我想調用修改其屬性的對象的一個方法:
Portfolios[0].UpdatePositions(db.GetPortfolio(1, Today));
的方法是這樣的:
public void UpdatePositions(Dictionary<string, double> valuepairs)
{
foreach (var k in this.positions.Keys.ToList())
{
if (valuepairs.ContainsKey(k))
this.positions[k] = valuepairs[k];
}
}
這工作,但問題是,當我嘗試更新只是列表的第一項:
Portfolios[0].UpdatePositions(db.GetPortfolio(1, Today));
該列表的所有項目都已更新! 我找不到爲什麼所有項目更新,不僅項目0 請幫助這真是一個頭痛
千恩萬謝
類定義:
public class NPortfolio
{
public string p_id { get; set; }
public int p_nr { get; set; }
private Dictionary<string, double> positions;
public NPortfolio(int nr, string id, Dictionary<string, double> pos)
{
p_nr = nr;
p_id = id;
positions = pos;
}
public void UpdatePositions(Dictionary<string, double> valuepairs)
{
foreach (var k in this.positions.Keys.ToList())
{
if (valuepairs.ContainsKey(k))
this.positions[k] = valuepairs[k];
}
}
public Dictionary<string, double> getPositions()
{
return positions;
}
}
你能提供'NPortfolio'的類定義嗎? –
你對位置使用靜態變量嗎? – Domysee
它們是否都共享相同的'Dictionary'實例?而且'ContainsKey'對我來說沒有任何意義。 – kevintjuh93