2012-01-21 3 views
1

Посмотрите изображение UML. У меня есть общий класс BinaryProblem, который получает два значения значения T, int long, decimal. Но я решил добавить новый класс Fraction.Можно добавить оператор класса?

enter image description here

Предположим, что у меня есть метод, называемый Add, Вычтите, мультипликативный и деление. Я бы хотел сделать что-то подобное.

var a = new Fraction(1/2); 
var b = new Fraction(3/4); 
var c = a + b; // Fraction { Numerator = 5, Denominator = 4 } 

Я знаю, что может только поставить условие, если (x.GetType() == ...), но я уверен, что позже я хотел бы добавить еще тип, и избежать повторять код.

Я почти забыл, можно добавить номера, где тип является общим?

ответ

3

Похоже, вы пытаетесь добавить оператора + в тип Fraction. Если да, попробуйте следующее:

class Fraction { 
    public static Fraction operator+(Fraction left, Fraction right) { 
    return left.Add(right); 
    } 

    public static Fraction operator+(Fraction left, int right) { 
    var right = new Fraction(right); 
    return left.Add(right); 
    } 
} 
+0

Это то, что я думал, но что такое 'BinaryProblem ' тогда? –

+0

@ JaredPar ничего себе, как скоро вы! Кстати, я забыл что-то написать, можно добавить числа, где тип значения - T? –

+0

@ JonathonReinhart не уверен. Ждал, когда ОП меня исправит, как это связано с проблемой. Пример кода, хотя, казалось, вызывал прямо для этого. – JaredPar

Смежные вопросы