我已經創建自定義列表:項目添加到我的自定義列表有局部範圍
public class BList : IEnumerable<Position>
{
private List<Position> positions = new List<BPosition>();
public void Add(Position p)
{ this.positions.Add(p); }
...
}
比這個名單是類發票的成員:
public class Invoice : Record
{
public BList Positions = null;
public Invoice()
: base()
{
Init();
this.Positions = new BList(this);
}
...
}
現在,在窗體的構造我填充發票的收集和添加位置BList:
foreach(Invoice invoice in this.invoices)
{
// Load position for current invoice from the database
List<Position> positionsTmp = new List<Position>();
DB.LoadRecordset(positionsTmp, "id_invoice=3");
// and add to invoice positions items
positionsTmp.ToList().ForEach(p => invoice.Positions.Add(p));
}
在每張發票的位置的名單是populat正確編輯。 但是,當我在同一類中的其他函數中使用list this.invoices時,每個發票都將位置列表清空(Count = 0)。它看起來像位置被添加到本地,並且當應用程序離開構造函數時,所有先前添加的位置BList被清除。 如何爲每個發票填充BList,以便他們在整個課程中都可用?
感謝
你的代碼很混亂。我認爲'Invoice'類的構造函數被命名爲'Position'。當我認爲它需要訪問'this.Positions'時,它引用'this.Position'。當我認爲它需要'invoice.Positions.Add'時,構造函數中的'ForEach'調用'invoice.Position.Add'。請清理你的代碼,以便我能理解它。 –
我更正了錯誤。 – Robert
所以你說在你的'foreach'循環中,'invoice.Positions.Count()'的返回值是非零的,但是在代碼的稍後一點,這個值是零?如果是這樣的話,那麼其他的東西就是清除列表。 –