Unit-Typ
Um die Arbeit mit arithmetischen Operationen auf Werten wie Prozentangaben und absoluten Werten zu vereinfachen, können Sie den Datentyp Unit verwenden. Er ermöglicht transparente Operationen mit Addition, Subtraktion, Multiplikation und Division. Unit kann in Decimal konvertiert werden, außer wenn der Wert ein Prozentwert ist, d. h. wenn der Typ Unit.Type auf UnitTypes.Percent gesetzt ist. Die Konvertierung zurück ist ebenfalls möglich; in diesem Fall wird immer ein Wert mit absolutem Wert erstellt, d. h. der Typ Unit.Type wird auf UnitTypes.Absolute gesetzt.
Verwendung von Unit
Sie können eine Unit mit speziellen Konstruktoren erstellen oder mithilfe von UnitHelper eine kürzere Schreibweise verwenden:
// absoluten Wert erstellen var absolute = new Unit(30); // Prozentwert erstellen var percent = 30.0.Percents();Unit verfügt über eine formatierte Ausgabe. Daher werden Werte abhängig vom Typ UnitTypes in eine Zeichenfolge umgewandelt:
Console.WriteLine("absolute = " + absolute); Console.WriteLine("percent = " + percent);gibt die folgenden Zeilen aus:
absolute = 30 percent = 30%Arithmetische Operationen mit Unit werden genauso ausgeführt wie mit normalen Zahlen:
// Addition von Werten Console.WriteLine("absolute + percent = " + (absolute + percent)); // Multiplikation von Werten Console.WriteLine("absolute * percent = " + (absolute * percent)); // Subtraktion von Werten Console.WriteLine("absolute - percent = " + (absolute - percent)); // Division von Werten Console.WriteLine("absolute / percent = " + (absolute / percent));Das Ergebnis arithmetischer Operationen mit Unit ist selbst wieder eine Unit, deren Typ dem Typ des ersten Operanden entspricht. Wenn Sie beispielsweise einen absoluten Wert und einen Prozentwert addieren, liegt das Ergebnis als absoluter Wert vor:
// Addition von absolutem Wert und Prozentwert var resultAbsolutePercents = absolute + percent; // und Konvertierung vom absoluten Wert in decimal var resultAbsolutePercentsDecimal = (decimal)resultAbsolutePercents; Console.WriteLine("absolute + percent = " + resultAbsolutePercents); Console.WriteLine("(decimal)(absolute + percent) = " + resultAbsolutePercentsDecimal);Die Ausgabe solcher Operationen sieht wie folgt aus:
absolute + percent = 39 (decimal)(absolute + percent) = 39Sie können auch vertraute Vergleichsoperatoren verwenden, um Werte zu vergleichen:
if (absolute > percent) Console.WriteLine("Absoluter Wert ist größer als Prozentwert"); if (absolute == percent) Console.WriteLine("Werte sind gleich");Um einen Wert positiv zu machen, können Sie die Methode
Abs()verwenden:var negative = new Unit(-10); var positive = negative.Abs(); // 10Um einen Wert mit einem bestimmten Faktor zu multiplizieren, können Sie die Methode
Times()verwenden:var multiplied = absolute.Times(5); // 150
Einschränkungen
- Werte vom Typ UnitTypes.Percent können nicht in andere Typen konvertiert werden.
- Werte vom Typ UnitTypes.Limit können nicht in arithmetischen Operationen verwendet werden.
- Vergleiche zwischen Werten unterschiedlicher Typen sind nicht immer möglich.
Der Typ Unit bietet eine konsistente Möglichkeit, mit verschiedenen Arten von Werten in Handelsanwendungen zu arbeiten, und erleichtert dadurch die Darstellung von Berechnungen in Bezug auf Preis und Volumen.