public override bool Equals(object obj) { try { if (obj == null) { return(false); } RationalNumbers rationalnumber = obj as RationalNumbers; // возвращает null если объект нельзя привести к типу Bank return(rationalnumber.numerator == this.numerator && rationalnumber.denominator == this.denominator); } catch (System.NullReferenceException) { return(false); } }//переопределение Equals
public static RationalNumbers operator+(RationalNumbers a, RationalNumbers b) { RationalNumbers cloneA = new RationalNumbers(a.Numerator, a.Denominator); RationalNumbers cloneB = new RationalNumbers(b.Numerator, b.Denominator); if (cloneA.Denominator >= cloneB.Denominator) { AddOrSubtract(cloneA.Denominator, cloneB.Denominator, cloneA, cloneB); } else { AddOrSubtract(cloneB.Denominator, cloneA.Denominator, cloneB, cloneA); } return(new RationalNumbers(cloneA.Numerator + cloneB.Numerator, cloneA.Denominator)); }
private static void AddOrSubtract(int largerNum, int smallerNum, RationalNumbers largerObj, RationalNumbers smallerObj) { int aTemp = largerObj.Denominator; int bTemp = smallerObj.Denominator; if (smallerNum % largerNum == 0) { smallerObj.Denominator = largerObj.Denominator; } else { smallerObj.Denominator *= largerObj.Denominator; largerObj.Denominator *= bTemp; } largerObj.Numerator *= largerObj.Denominator / aTemp; smallerObj.Numerator *= smallerObj.Denominator / bTemp; }