最近在看Dictionary的源代碼的時候, 突然想到Dictionary的不當使用中有一種隱含內存洩漏的可能.
小A正在寫一個簡單的圖書銷售系統.
他首先需要處理的是訂單和訂單裡面對應的書目集合. 接著他發現自己需要一個特定的內存結構, 來臨時保存所有的訂單及其伴隨的銷售書目集合, 以減小對數據庫的壓力. 小A想到了詞典Dictionary這個保存關聯數據最好用的結構 - 將訂單Order對象做為鍵, 將對應的銷售書目Books作為值, 保存在詞典中.
訂單中包含訂單ID/訂貨人ID/訂貨時間. 小A知道, 要想將Order對象作為鍵, 他必須重寫Order類的GetHashCode()方法和Equals()方法, 使這兩個函數有意義而不是接受系統默認的實現, 這是Dictionary所要求的. 這個功能實現示意如下:
Order Class