我有一个具有 2 个字段 ID 和名称的结构(结构)。然后我创建了这个结构的列表,但是每当我做一个包含它第一次将它添加到集合中时它就可以工作了,但是它不再工作了。为什么?它不是一个引用是一个结构。我想验证这是否不在列表中添加它。
public struct MyCar
{
public int id { get; set; }
public string name { get; set; }
}
List<MyCar> cars = new List<MyCar>();
MyCar myCar = new MyCar();
myCar.id = 1;
myCar.name = "a";
if(cars.Contains(myCar) == false)
{
cars.Add(myCar);
}
myCar = new MyCar();
myCar.id = 2;
myCar.name = "b";
if(cars.Contains(myCar) == false)
{
cars.Add(myCar);
}
myCar = new MyCar(); //Wrong. Duplicate and it's gonna be added again because Contains == false
myCar.id = 1;
myCar.name = "a";
if(cars.Contains(myCar) == false)
{
cars.Add(myCar);
}
也许我可以使用 Find 来匹配 => X.ID 和 => X.NAME 但我不想要这个,因为我的结构实际上比这两个字段更复杂。