C#矩阵比较运算符重载

C# matrix comparison operator overloading

我正在尝试重载比较运算符,但出现编译器错误 CS0029

当我使用简单的 return 语句时出现错误,要求我应该 return 一个值,因此我使用了一个变量。

下面是代码

//Equal to operator
        public static bool operator ==(Matrix mat1, Matrix mat2)
        {
            bool boo = false;
            for (int i = 0; i < DimSize; i++)
                for (int j = 0; j < DimSize; j++)
                    if (mat1[i, j] == mat2[i, j])
                        boo = true;
                    else
                        boo = false;
            return boo;

        }


        //not equal to
        public static bool operator !=(Matrix mat1, Matrix mat2)
        {
            bool boo = false;
            for (int i = 0; i < DimSize; i++)
                for (int j = 0; j < DimSize; j++)
                    if (mat1[i, j] == mat2[i, j])
                        boo = true;
                    else
                        boo = false;
            return boo;
        }

这是您的接线员:

public static bool operator ==(Matrix mat1, Matrix mat2)

需要 2 个 Matrix 个实例和 returns 个 bool

但是,您的代码会在 2 个 Matrix 实例上进行相等性检查 ==,并尝试将其 mash 到另一个 Matrix

Matrix sumMat = mat01 == mat02
                >----bool----<

这正是编译器告诉你的;您不能(至少在您当前的实现中)将 bool 转换为 Matrix.

您可能想要:

bool sumMat = mat01 == mat02. 
   bool       >----bool----<

如果不是,您将需要另一个 隐式运算符 bool 转换为 Matrix:

public static implicit operator Matrix(bool b) => //somehow return a Matrix;