オブジェクトが特定の基準を与えられたオブジェクトのリスト内の 1 つと等しい (名前が等しい) かどうかをテストしようとしています。そうであれば、リストに追加しないでください。この署名「static int Find(List c, Coffee x)」を使用するメソッドを使用する必要があります。Find は c で x をシークし、x が c に存在する場合は有効なインデックス (つまり、0、1、…) を返し、そうでない場合は -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;
}
}