system.stackoverlowexception无法计算表达式,因为当前线程处于堆栈溢出状态

本文关键字:线程 前线 于堆 状态 栈溢出 因为 stackoverlowexception 计算 表达式 system | 更新日期: 2023-09-27 18:27:25

当代码命中此函数时,我得到一个System.StackOverFlowException。

其中,stringtype是用户定义的元组,等于类型库中的函数int。

  public static bool Equals(StringType leftHand, StringType rightHand)
  {
       if (leftHand == rightHand)
       {
          return true;
       }
       if ((leftHand == "0") || (rightHand == "0"))
       {
          return false;
       }
       return (leftHand.myValue.Equals(rightHand.myValue) && leftHand.myState.Equals(rightHand.myState));
   }

system.stackoverlowexception无法计算表达式,因为当前线程处于堆栈溢出状态

if (leftHand == rightHand)

更改为

if (object.ReferenceEquals(leftHand, rightHand))

您可能将==运算符重新定义为调用Equals

我希望你不要有一个隐含的运算符,从string创建StringType,因为否则

if ((leftHand == "0") || (rightHand == "0"))

可能会因为同样的原因而自称。

可能是

if ((leftHand.myValue == "0") || (rightHand.myValue == "0"))

会更好。