Poniższy kod jest bardzo monotonne:Jak używać rodzajowych rozwijać kod, który działa na deblu i dziesiętnych
public static double Interpolate(double x1, double y1, double x2, double y2, double x)
{
return y1 + (x - x1) * (y2 - y1)/(x2 - x1);
}
public static decimal Interpolate(decimal x1, decimal y1, decimal x2, decimal y2, decimal x)
{
return y1 + (x - x1) * (y2 - y1)/(x2 - x1);
}
Jednak moja próba wykorzystania rodzajowych nie kompiluje:
public static T Interpolate<T>(T x1, T y1, T x2, T y2, T x)
{
return y1 + (x - x1) * (y2 - y1)/(x2 - x1);
}
błędu komunikat jest następujący:
Błąd 2 Operatora "-" nie można zastosować do argumentów typu "T" i "T" C: \ Git ... \ LinearInterpolator.cs
Jak mogę ponownie użyć mojego kodu?
Edytuj: szybkie środowisko uruchomieniowe jest ważne dla tych modułów.
całkiem pewny, że jesteś bardziej lub mniej zablokowany, co tam masz ... – Servy
jako 'System.Double' i' System.Decimal' nie dzielcie wspólnego przodka określającego operatorów, których potrzebujecie, obawiam się, że nie możecie. –
C# nie ma "generycznych" w powszechnym rozumieniu tego słowa. Nie można użyć niczego z T, chyba że typ jest już znany (ograniczony). –