Как лучше всего перекодировать этот пример метода расширения, чтобы он был универсальным для всех числовых типов? - PullRequest
0 голосов
/ 19 августа 2011

Как лучше всего перекодировать этот пример метода расширения, чтобы он был универсальным для всех числовых типов?

public static float clip(this float v, float lo, float hi)
{ return Math.Max(lo, Math.Min(hi, v)); }

Спасибо.

1 Ответ

1 голос
/ 19 августа 2011
// IComparable constraint for numeric types like int and float that implement IComparable
public static T clip<T>(this T v, T lo, T hi) where T : IComparable<T>
{
  // Since T implements IComparable, we can use CompareTo
  if(v.CompareTo(lo)<0)
    v=lo; // make sure v is not too low
  if(v.CompareTo(hi)>0)
    v=hi; // make sure v is not too high
  return v;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...