Ich erstelle meinen eigenen Typ für die Darstellung von CSS-Werten (wie Pixel zB 12px). Um hinzufügen/subtrahieren/multiplizieren/... meinen Typ und Ints habe ich zwei implizite Operatoren zu und von int definiert. Alles funktioniert gut, außer einer Sache .. Wenn ich schreibe:C# Implizite Operatoren und ToString()
CssUnitBase c1 = 10;
Console.WriteLine(c1);
I "10" anstelle von "10px" get - impliziter Konvertierung wird stattdessen toString() -Methode auf int verwendet. Wie kann ich das verhindern?
Können Sie den Code in die 'CssUnitBase' Klasse schreiben? Von der Art, wie Sie es benutzen, scheint es ein Wrapper um int zu sein. – Oded
ut hängt davon ab, wie Sie den Wert in CssUnitBase intern speichern und wie Sie ihn zurückgeben. "Sprechen ist billig, zeigen Sie uns den Code" – vaitrafra
@vaitrafra: Ich sehe nicht, wie es überhaupt darauf ankommt. Es gibt eine implizite Konvertierung in/aus int und eine Überschreibung für ToString. Das sind die Teile der öffentlichen API, die in dieser Frage relevant sind, und ich denke nicht, dass ihre Implementierung überhaupt von Bedeutung ist. Es ist was aufgerufen wird, was relevant ist. –