SORU
21 NİSAN 2010, ÇARŞAMBA


Nerede "kelepçe" fonksiyonu .NET?

Bir değer aralığı için x kelepçe [a, b] istiyorum:

x = (x < a) ? a : ((x > b) ? b : x);

Bu oldukça basit. Ama "bir işlev sınıf kitaplığı - en az System.Math. değil kelepçe görmüyorum

Bir değer "bazı maksimum ve minimum değerler arasında yatıyor emin olmaktır. kelepçe (habersiz Eğer max değerden daha büyük ise, o zaman max, vb yerine.)

CEVAP
21 NİSAN 2010, ÇARŞAMBA


Uzantısı yöntemi yazabilirsiniz:

public static T Clamp<T>(this T val, T min, T max) where T : IComparable<T>
{
    if (val.CompareTo(min) < 0) return min;
    else if(val.CompareTo(max) > 0) return max;
    else return val;
}

EDİT: Uzatma yöntemleri statik sınıfları - bu düşük seviyeli bir işlevi oldukça olduğundan, muhtemelen projenizde bazı temel ad dikilmeli. Sonra ad, örneğin kullanarak bir Direktif içeren herhangi bir kod dosyasında yöntemi kullanabilirsiniz

using Core.ExtensionMethods

int i = 4.Clamp(1, 3);

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 2ndfloor91

    2ndfloor91

    17 Kasım 2007
  • BumbleDroid

    BumbleDroid

    18 EKİM 2010
  • TheDamnWreckless

    TheDamnWreck

    12 Temmuz 2010