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;
我正在尝试重载比较运算符,但出现编译器错误 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;