有没有一种方法可以使对象位于从2d数组检索的坐标中进行比较?

时间:2019-01-21 14:00:53

标签: c# .net multidimensional-array

如果我的对象在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)}

1 个答案:

答案 0 :(得分:2)

  

我正在使用.Equals,但似乎忽略了它。

是的

 if (matrix[x, y].Equals(car))

仅适用

  1. car是对矩阵中实例的引用时,或
  2. 当您覆盖Car.Equals

类的默认比较是引用相等。仅当搜索元素car是与矩阵完全相同的对象时,这种方法才起作用。

如果要与具有相同属性值的其他对象进行比较,则必须自己实现“相等”。