首页 / 软件开发 / C# / C#当调用Remove失效时
C#当调用Remove失效时2011-05-24有没有试过从一个集合里面移除一个对象之后,这个集合仍然留有这个对象?世界之大,无奇不有。稍有疏忽,便会导致这种奇怪的现象。现在让我们看看这个“不死”对象究竟是怎么一回事。1、“不死”对象现身这个问题起初是我一个同事提出的,为了重现“不死”对象,现把代码简化如下:// Code #01IList products = new List<Product>();
products.Add(GetProduct("1412"));
products.Remove(GetProduct("1412"));
其中 Product 类代码如下:// Code #02class Product
{
public Product(string id)
{
m_ID = id;
}
private string m_ID;
public string ID
{
get { return m_ID; }
}
public override string ToString()
{
return "ID: " + m_ID;
}
}
而 GetProduct 方法则根据传入的 ID 从数据库读取数据并返回,它的签名如下:// Code #03public static Product GetProduct(string id);要想知道编号为 1412 的对象是否从 products 中移除,只需在 Code #01 的最后加上这样一行:// Code #04Console.WriteLine(products.Count);