ARTICLE AD BOX
I have two classes: UNumber and Number (which inherits from UNumber).
Both use the same addition, although Number also looks at the sign of the Numbers.
I want that the addition of Number gets used if one of the objects for the addition method is a Number.
It seems to me that the override Add method of Number gets used if the Add method of an overriding member gets called. (underlying Type Number)
I currently have this code:
UNumber unumber = new(); Number number = new(); number.Add(number); // Wanted output: "Add Method of Number" // Result: "Add Method of Number" number.Add(unumber); // Wanted output: "Add Method of Number" // Result: "Add Method of Number" unumber.Add(number); // Wanted output: "Add Method of Number" // Result: "Add Method of UNumber" // The whole issue lies here. The simple Add Method of UNumber gets called // instead of the complex Add Method of Number which works fine for UNumbers and Numbers unumber.Add(unumber); // Wanted output: "Add Method of UNumber" // Result: "Add Method of UNumber" UNumber1 unumber2 = number; number.Add(number); // Result: "Add Method of Number" class UNumber { public uint value; public UNumber(uint numberin = 0) { value = numberin; } public virtual void Add(UNumber numberin) { value += numberin.value; Console.WriteLine("Add Method of UNumber"); } } class Number : UNumber { public bool positive; public Number(uint numberin = 0, bool positivein = true) { value = numberin; positive = positivein; } public override void Add(UNumber numberin) { // Cannot cast object as this throws an error, // I know better workarounds but no neat method to solve this. Add(new Number(numberin.value)); } public void Add(Number numberin) { uint add1 = value; uint add2 = numberin.value; if (positive != numberin.positive) { if (value < numberin.value) { value = numberin.value - value; } else { value -= numberin.value; } positive = !positive; } else { value += numberin.value; } Console.WriteLine("Add Method of Number"); } }36k18 gold badges79 silver badges112 bronze badges
New contributor
user31962013 is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.
Explore related questions
See similar questions with these tags.
