2016-09-22 79 views
1

我写了一个通用的扩展方法,看看是否的关键是在一定范围内:什么决定我是否可以使用比较运算符?

public static bool IsInRange(this Key key, Key lowerBoundKey, Key upperBoundKey) 
{ 
    return lowerBoundKey <= key && key <= upperBoundKey; 
} 

这似乎很简单,但假设我要编写一个通用的方法相当于将与任何类型的可以使用工作在<=比较操作:

public static bool IsInRange(this T value, T lowerBound, T upperBound) 
{ 
    return lowerBound <= value && value <= upperBound; 
} 

如何申请where T : ISomethingIDontKnow,所以我可以使这个编译?

+0

不确定,但如果它实现IComparable可能足够 – Paparazzi

+0

'其中T:IComparable'应该足以让它工作。 – Nkosi

回答

3

使用where T : IComparable将该方法转换为通用方法应该足以使其工作。

public static bool IsInRange<T>(this T value, T lowerBound, T upperBound) 
    where T : IComparable { 

    return value != null && lowrBound != null && upperBound !=null 
      && lowerBound.CompareTo(value) <= 0 && value.CompareTo(upperBound) <= 0; 
} 
相关问题