如果我的对象在2D数组中找到,我正在尝试打印坐标。正在使用.Equals,但似乎忽略了它。
private void PrintCarInfo(Car car, object[,] matrix)
{
int xCoordinate = 0;
int yCoordinate = 0;
int w = matrix.GetLength(0);
int h = matrix.GetLength(1);
for (int x = 0; x < w; ++x)
{
for (int y = 0; y < h; ++y)
{
if (matrix[x, y].Equals(car))
{
xCoordinate = x;
yCoordinate = y;
}
}
}
}
这是Car类:
public class Car
{
public int Index { get; set; }
public string Name { get; set; }
public bool Manual { get; set; }
public bool Diesel { get; set; }
public Car()
{
}
public Car(Car car)
{
Index = car.Index;
Name = car.Name;
Manual = car.Manual;
Diesel = car.Diesel;
}
}
这是从2D阵列进行调试时得到的:
[1,1] {Toyota (15)}
答案 0 :(得分:2)
我正在使用.Equals,但似乎忽略了它。
是的
if (matrix[x, y].Equals(car))
仅适用
car
是对矩阵中实例的引用时,或类的默认比较是引用相等。仅当搜索元素car
是与矩阵完全相同的对象时,这种方法才起作用。
如果要与具有相同属性值的其他对象进行比较,则必须自己实现“相等”。