Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有方法获取从2d数组检索到的坐标中的对象以进行比较?_C#_.net_Multidimensional Array - Fatal编程技术网

C# 是否有方法获取从2d数组检索到的坐标中的对象以进行比较?

C# 是否有方法获取从2d数组检索到的坐标中的对象以进行比较?,c#,.net,multidimensional-array,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); f

如果在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;
                }
            }
        }
    }
这是我从2D阵列调试时得到的结果:

[1,1] {Toyota (15)}
我使用.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
    是对矩阵中实例的引用时,或
  • 当你超越汽车时,等于
  • 类的默认比较是引用相等。只有当搜索元素
    car
    与矩阵中的对象完全相同时,这才起作用

    当您想要比较不同的对象但具有相同的属性值时,您必须自己实现相等

    我使用.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
    是对矩阵中实例的引用时,或
  • 当你超越汽车时,等于
  • 类的默认比较是引用相等。只有当搜索元素
    car
    与矩阵中的对象完全相同时,这才起作用


    当您想要比较不同的对象但具有相同的属性值时,您必须自己实现相等

    三,。使用值类型/struct@fubo-
    汽车
    属于
    。我不鼓励把它变成一个结构。我的错-在我看来,你想计算所有可能的方式
    Equals()
    如何工作,我只想添加另一个选项是否可以只使用整个对象中的一个属性来检索和比较?这意味着如果索引相同,trueSure,
    if(矩阵[x,y].index==car.index)
    3。使用值类型/struct@fubo-
    汽车
    属于
    。我不鼓励把它变成一个结构。我的错-在我看来,你想计算所有可能的方式
    Equals()
    如何工作,我只想添加另一个选项是否可以只使用整个对象中的一个属性来检索和比较?这意味着如果索引相同,trueSure,
    if(矩阵[x,y].index==car.index)
    如果不重写
    Equals
    ,那么一个对象就不会相等,除非它是实际的相同实例,即使所有属性都相等。另外,我更喜欢@Jodrell-jagged(数组数组的数组)速度稍微快一点,但除非直接需要非矩形形状,否则我更喜欢多维。保持简单。如果不重写
    Equals
    ,那么对象就不会相等,除非它是实际的同一实例,即使所有属性都相等。顺便说一下,我更喜欢@Jodrell-jagged(数组数组数组)快一点,但除非直接需要非矩形形状,否则我更喜欢多维。保持简单。