我正在尝试测试一个对象是否等于给定特定条件的对象列表中的一个(名称相等),如果是,则不要将其添加到列表中,否则添加它。我必须使用具有此签名“static int Find(List c, Coffee x)”的方法。Find 在 c 中寻找 x 并返回一个有效的索引(即 0, 1, ...)如果 x 存在于 c 中,否则返回 -1。当我传递完全匹配时,我的 equals 方法似乎没有意识到名称是相同的。为什么是这样?这是我的代码:
Coffee obv = new Coffee();
Decaf decafCoffee = null;
Regular regularCoffee = null;
List<Coffee> inventory = new List<Coffee>();
if (some sxpression)
{
decafCoffee = new Decaf(name, D, C, M);
find = obv.Find(inventory, decafCoffee);
if (find == -1)
{
inventory.Add(decafCoffee);
}
}
public class Coffee : IDisposable
{
public override bool Equals(object obj)
{
if (obj is Coffee)
{
bool isNameEqual = Name.Equals(this.Name);
return (isNameEqual);
}
return false;
}
public int Find(List<Coffee> c, Coffee x)
{
if (c.Equals(x))
{
return 0;
}
return -1;
}
}