这是我的代码:
public class Range<TNum> where TNum : IComparable
{
public TNum From { get; set; }
public TNum To { get; set; }
}
public class MarkableRange<TNum> where TNum : IComparable
{
private readonly List<Range<TNum>> _markedRanges = new List<Range<TNum>>();
public void MarkOne(TNum number)
{
_markedRanges.Where(r => number >= r.From && number <= r.To);
}
}
Run Code Online (Sandbox Code Playgroud)
编译器说它不能在number >= r.From和中的操作数上应用operator> =number <= r.To
我可以逃脱,List<Tuple<TNum, TNum>>但我想要更有意义的东西.那么我做错了什么或c#编译器不是那么聪明才能理解我的意图?
TNum被限制实现IComparable,没有你正在使用的运算符(<=和>=).您应该使用该CompareTo方法:
public void MarkOne(TNum number) {
_markedRanges.Where(r => number.CompareTo(r.From) >= 0 && number.CompareTo(r.To) <= 0);
}
Run Code Online (Sandbox Code Playgroud)
要使用运营商,请看这里.
此外,更喜欢通用IComparable<T>.
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |