1.13 Einen verkleinernden numerischen Cast sicher durchführen

Problem

Sie müssen einen Wert von einem größeren Typ auf einen kleineren Typ casten und dabei Bedingungen, die zu Informationsverlust führen, sauber behandeln. Beispielsweise führt ein Cast von einem long auf ein int-Ergebnis nur dann zu einem Informationsverlust, wenn der Wert im long-Datentyp größer als int.MaxSize ist.

Lösung

Am einfachsten lässt sich das mit dem Schlüsselwort checked erreichen. Die folgende Methode akzeptiert zwei long-Werte und addiert diese. Das Ergebnis wird dann in einen int umgewandelt. Wenn eine Überlaufbedingung vorliegt, wird eine OverflowException ausgelöst:

using System; public void UseChecked(long lhs, long rhs) { int result = 0; try { result = checked((int)(lhs ...

Get C# Kochbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.