Feedback

C# - Zahl - IsInRange

Veröffentlicht von am 19.12.2013
(0 Bewertungen)
Diese Erweiterungsmethode für System.Double prüft ob der Wert in einem bestimmten Bereich liegt. Die Ober- und Untergrenze des Bereichs müssen dabei als Parameter übergeben werden. Der 3. Parameter gibt an ob die angegebenen Grenzen noch im Bereich liegen oder nicht.

Die Methode kann auch leicht für andere numerischen Typen (int, decimal, ...) implementiert werden. Dazu muss nur der Typ double gegen den jeweils anderen Typ im Methodenkopf ausgetauscht werden.
Snippet in VB übersetzen
/// <summary>
/// Stellt Erweiterungsmethoden bereit.
/// </summary>
static class Extensions
{
    /// <summary>
    /// Bestimmt ob ein Wert in einem bestimmten Bereich liegt.
    /// </summary>
    /// <param name="val">Der zu prüfende Wert.</param>
    /// <param name="min">Die Untergrenze des Bereichs.</param>
    /// <param name="max">Die Obergrenze des Bereichs.</param>
    /// <param name="rangeType">Bestimmt ob die Grenzen inklusiv oder exklusiv sind.</param>
    /// <returns><c>True</c>, wenn <paramref name="value"/> in den angegebenen Grenzen liegt. Andernfalls <c>False</c>.</returns>
    public static bool IsInRange(this double val, double min, double max, RangeTypes rangeType)
    {
        return ((rangeType == RangeTypes.Excl || rangeType == RangeTypes.ExclIncl) ? val > min : val >= min)
            && ((rangeType == RangeTypes.Excl || rangeType == RangeTypes.InclExcl) ? val < max : val <= max);
    }

}

/// <summary>
/// Bestimmt die Grenzarten eines Bereichs.
/// </summary>
enum RangeTypes
{
    /// <summary>
    /// Die Untergrenze wird ein- und die Obergrenze ausgeschlossen.
    /// </summary>
    InclExcl,
    /// <summary>
    /// Die Untergrenze wird aus- und die Obergrenze eingeschlossen.
    /// </summary>
    ExclIncl,
    /// <summary>
    /// Beide Grenzen werden eingeschlossen.
    /// </summary>
    Incl,
    /// <summary>
    /// Beide Grenzen werden ausgeschlossen.
    /// </summary>
    Excl,
}

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!