class Order
{ public void delelt(Product pro)
{
orderList.Remove(pro);
}
} case 4:
Console.WriteLine("请输入商品的ID:");
product.Id = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入商品名称:");
product.Name = Console.ReadLine();
Console.WriteLine("请输入商品数量:");
product.Count = Convert.ToInt32(Console.ReadLine());
order.delelt(product);
break;
我用属性匹配来删除 为什么就是删不掉呢??
or
array.RemoveAt(id)
我实例过一个实体类 然后设置了相应的属性值 将对象放入arraylist中之后 我想通过输入 相关的属性值 删除 刚刚放入arraylist中的那个对象
先将对象放入arraylist中然后 根据一个对象的属性 找到 对象然后删除对象我删除不了……
string str1 = "C";
string str2 = "S";
string str3 = "D";
string str4 = "N";
array.Add(str1);
array.Add(str2);
array.Add(str3);
array.Add(str4);
array.Remove(str3);
orderList.Remove(pro);
这个pro是orderList这个数组的index,不是你的ID
所以删除你要列出来让他点击删除那个,你就可以获得他的索引了,就可以
orderList.Remove(索引);
啊 大哥 不是那样的啊 public void delelt(Product pro)
{
orderList.Remove(pro);
}这个是我的方法 class Product
{
private string name;
private int count;
private int id;
public Product()
{
}
public string Name
{
get { return Name; }
set { name = value; }
}
public int Count
{
get { return count; }
set { count = value; }
}
public int Id
{
get { return id; }
set { id = value; }
}
public override string ToString()
{
return "\nProductId:"+id+ "\nProductName:" +name +"\nProductCount:"+count;
}这个是我的对象属性类
case 4:
//order = new Order();
Console.WriteLine("请输入商品的ID:");
product.Id = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入商品名称:");
product.Name = Console.ReadLine();
Console.WriteLine("请输入商品数量:");
product.Count = Convert.ToInt32(Console.ReadLine());
order.delelt(product);
break;
输入相应的属性 找到对象 然后删除……但是我删除不了……
order.delelt(product);这句就没作用了,因为两者的引用不同。
最简单的解决方法 Product(产品类)重载Equals方法
public override bool Equals(object obj)
{ if (obj == null ||!(obj is Product))
{
return false;
}
return (obj as Product).id == id;
}
i 从0到orderList.Length-1循环
判断id与这个orderList的ID值否相等,相等则
orderList.Remove(i);