예제 #1
0
    /// <summary>
    /// Returns true if the value exists within the defined range.
    /// </summary>
    /// <param name="value">The value to verify is in the range.</param>
    /// <returns>
    /// <exception cref="ArgumentNullException"><paramref name="value"/> is null.</exception>
    public static bool Contains <T>(
        this IRange <Boundary <T> > range,
        T value)
        where T : IComparable <T>
    {
        if (range is null)
        {
            throw new ArgumentNullException(nameof(range));
        }
        range.AssertIsValidRange();
        if (IsNaN(value))
        {
            return(false);
        }
        var low = value.CompareTo(range.Low);

        if (low < 0)
        {
            return(false);
        }
        if (low == 0)
        {
            return(range.Low.Inclusive);
        }
        var high = value.CompareTo(range.High);

        return(high < 0 || high == 0 && range.High.Inclusive);
    }