AFAIK .NET में ऐसी कोई चीज़ नहीं है। यद्यपि एक सामान्य कार्यान्वयन के साथ आने के लिए दिलचस्प होगा।
एक सामान्य बीसीएल गुणवत्ता रेंज प्रकार का निर्माण बहुत काम है, लेकिन यह कुछ इस तरह दिख सकता है:
public enum RangeBoundaryType
{
Inclusive = 0,
Exclusive
}
public struct Range<T> : IComparable<Range<T>>, IEquatable<Range<T>>
where T : struct, IComparable<T>
{
public Range(T min, T max) :
this(min, RangeBoundaryType.Inclusive,
max, RangeBoundaryType.Inclusive)
{
}
public Range(T min, RangeBoundaryType minBoundary,
T max, RangeBoundaryType maxBoundary)
{
this.Min = min;
this.Max = max;
this.MinBoundary = minBoundary;
this.MaxBoundary = maxBoundary;
}
public T Min { get; private set; }
public T Max { get; private set; }
public RangeBoundaryType MinBoundary { get; private set; }
public RangeBoundaryType MaxBoundary { get; private set; }
public bool Contains(Range<T> other)
{
// TODO
}
public bool OverlapsWith(Range<T> other)
{
// TODO
}
public override string ToString()
{
return string.Format("Min: {0} {1}, Max: {2} {3}",
this.Min, this.MinBoundary, this.Max, this.MaxBoundary);
}
public override int GetHashCode()
{
return this.Min.GetHashCode() << 256^this.Max.GetHashCode();
}
public bool Equals(Range<T> other)
{
return
this.Min.CompareTo(other.Min) == 0 &&
this.Max.CompareTo(other.Max) == 0 &&
this.MinBoundary == other.MinBoundary &&
this.MaxBoundary == other.MaxBoundary;
}
public static bool operator ==(Range<T> left, Range<T> right)
{
return left.Equals(right);
}
public static bool operator !=(Range<T> left, Range<T> right)
{
return !left.Equals(right);
}
public int CompareTo(Range<T> other)
{
if (this.Min.CompareTo(other.Min) != 0)
{
return this.Min.CompareTo(other.Min);
}
if (this.Max.CompareTo(other.Max) != 0)
{
this.Max.CompareTo(other.Max);
}
if (this.MinBoundary != other.MinBoundary)
{
return this.MinBoundary.CompareTo(other.Min);
}
if (this.MaxBoundary != other.MaxBoundary)
{
return this.MaxBoundary.CompareTo(other.MaxBoundary);
}
return 0;
}
}
यह क्यों डाउनवॉट किया गया था? – jason
इस पर डाउनवॉट्स मुझे भ्रमित कर रहे हैं। – jason
मुझे दो अस्पष्ट डाउनवॉट भी मिला। काफी कष्टप्रद। मुझे क्षतिपूर्ति करने के लिए +1। – Steven