小编A_O*_*gon的帖子

如何在类中重载 Equals 运算符以便 Queue.Contains() 正常工作?

我创建了一个类 State。对于 State 对象的队列,我想测试队列是否已包含相同值的 State 对象。当数组的所有值都相等且顺序相同时,两个 State 对象(每个都包含一个 2D 布尔数组)相等。

这是我的相关代码:

public class State {
   Boolean[,] grid = new Boolean[4,4];

   Public State(Boolean[,] passedGrid){ //Constructor
       grid = Array.Copy(passedGrid, grid, 16);
   }

   public bool Equals(State s2){ //Overloaded equals operator
         for (int x = 0; x < 4; x++){
                 for (int y = 0; y < 4; y++){
                      if (grid[x, y] != s2.grid[x, y]){
                            return false;
                        }
                    }
                }
                return true;
            }

}

    public void testContains(Boolean[] testArray) {
        Queue<State> testQueue = new Queue<State>(); …
Run Code Online (Sandbox Code Playgroud)

c# containers overloading equals

6
推荐指数
1
解决办法
1252
查看次数

标签 统计

c# ×1

containers ×1

equals ×1

overloading ×1