在一个范围内保持一个整数?

时间:2016-06-17 14:49:14

标签: c#

要将整数保持在某个范围内,目前我正在做:

ő

是否有更清晰的方式进行绑定检查?

2 个答案:

答案 0 :(得分:2)

对于紧凑性(虽然不是性能),你可以考虑这样的事情:

frame.X = Math.Min(Image.Width - frame.Width, Math.Max(0, frame.X));
frame.Y = Math.Min(Image.Height - frame.Height, Math.Max(0, frame.Y));

答案 1 :(得分:1)

如果您的目标是结构方法,则可以使用扩展方法

public static class IComparableExtensions
{

    public static T Min<T>(this T a, T b) where T : IComparable<T>
    {
        return a.CompareTo(b) < 0 ? a : b;
    }

    public static T Max<T>(this T a, T b) where T : IComparable<T>
    {
        return a.CompareTo(b) > 0 ? a : b;
    }

    public static T Clip<T>(this T a, T Min, T Max) where T : IComparable<T>
    {
        return a.Max(Min).Min(Max);
    }
}

考虑到检查。