You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.1 KiB

  1. using System;
  2. namespace Apewer.Internals
  3. {
  4. internal class NumberHelper
  5. {
  6. /// <summary>约束值范围,若源值不在范围中,则修改为接近的值。</summary>
  7. public static int RestrictValue(int argOrigin, int argMin, int argMax)
  8. {
  9. if (argMin > argMax) return argOrigin;
  10. if (argOrigin < argMin) return argMin;
  11. if (argOrigin > argMax) return argMax;
  12. return argOrigin;
  13. }
  14. /// <summary>约束值范围,若源值不在范围中,则修改为接近的值。</summary>
  15. public static T RestrictValue<T>(T argOrigin, T argMin, T argMax) where T : IComparable
  16. {
  17. var origin = argOrigin;
  18. var min = argMin;
  19. var max = argMax;
  20. try
  21. {
  22. if (min.CompareTo(max) > 0) return argOrigin;
  23. if (origin.CompareTo(min) < 0) return min;
  24. if (origin.CompareTo(max) > 0) return max;
  25. return origin;
  26. }
  27. catch { }
  28. return origin;
  29. }
  30. }
  31. }