public static implicit operator double(Fraction f)
{
return (double)f.num / f.den;
}
Mógłby ktoś pomóc mi zrozumieć tę linijkę?
Mam obiekt klasy Fraction, i tak konwertuję go na double. Ale dlaczego double występuje tutaj na miejscu operatora?
Rozumiem, że funkcja zwraca double, ale po co tam jest to słowo kluczowe "operator"?
Trochę się w tym zamotałem...
Jakby ktoś chciał spojrzeć, to cały kod wygląda tak:
using System;
class Fraction
{
int num, den;
public Fraction(int num, int den)
{
this.num = num;
this.den = den;
}
public static Fraction operator +(Fraction a, Fraction b)
{
return new Fraction(a.num * b.den + a.den * b.num, a.den * b.den);
}
public static Fraction operator *(Fraction a, Fraction b)
{
return new Fraction(a.num * b.num, a.den * b.den);
}
public static implicit operator double(Fraction f)
{
return (double)f.num / f.den;
}
}
class Program
{
static void Main(string[] args)
{
Fraction a = new Fraction(3, 4);
Fraction b = new Fraction(7, 8);
Fraction c = a + b;
Console.WriteLine((double)a);
Console.WriteLine((double)c);
Console.ReadKey();
}
}