読者です 読者をやめる 読者になる 読者になる

ふるすたっくえんじにあっぽい人の日記

ASP .NET MVC (C#)、.NET Framework、iOS (Objective-c) アプリ、Androidアプリ (Java)、AWS、たまにLAMPとかプロジェクトマネジメントあたりのお話

【C#】IComparable拡張 - とある値が範囲内にあるか調べる

拡張シリーズ!
他のは大体晒したかな?

using System;

/// <summary>
/// IComparable拡張
/// </summary>
public static class IComparableExtensions
{
    /// <summary>
    /// 指定された値がmin以上、max以下かどうか
    /// </summary>
    /// <typeparam name="T">型</typeparam>
    /// <param name="value">値</param>
    /// <param name="min">最小値</param>
    /// <param name="max">最大値</param>
    /// <returns></returns>
    public static bool IsInclusive<T>(this T value, T min, T max) where T : IComparable<T>
    {
        return value.CompareTo(min) >= 0 && value.CompareTo(max) <= 0;
    }

    /// <summary>
    /// 指定された値がminより大きく、maxより小さいかどうか
    /// </summary>
    /// <typeparam name="T">型</typeparam>
    /// <param name="value">値</param>
    /// <param name="min">最小値</param>
    /// <param name="max">最大値</param>
    /// <returns></returns>
    public static bool IsExclusive<T>(this T value, T min, T max) where T : IComparable<T>
    {
        return value.CompareTo(min) > 0 && value.CompareTo(max) < 0;
    }
}