Questions tagged «icomparable»



8
如何比较泛型类型的值?
如何比较泛型类型的值? 我将其简化为最小样本: public class Foo<T> where T : IComparable { private T _minimumValue = default(T); public bool IsInRange(T value) { return (value >= _minimumValue); // <-- Error here } } 错误是: 运算符'> ='不能应用于类型'T'和'T'的操作数。 到底怎么回事!?T已被约束到IComparable,甚至它限制值类型(的时候where T: struct),我们仍然不能将任何运营商<,>,<=,>=,==或!=。(我知道涉及和的变通办法Equals()存在,但对关系运算符没有帮助)。==!= 因此,有两个问题: 为什么我们观察到这种奇怪的行为?是什么让我们从比较这是泛型类型的值称为是IComparable?难道不以某种方式破坏了通用约束的全部目的吗? 我该如何解决这个问题,或者至少要解决它? (我意识到已经有一些问题与这个看似简单的问题有关,但是没有一个线程给出详尽或可行的答案,所以在这里。)

6
如何实现IComparable接口?
我用类的实例填充数组: BankAccount[] a; . . . a = new BankAccount[] { new BankAccount("George Smith", 500m), new BankAccount("Sid Zimmerman", 300m) }; 填充此数组后,我想按余额金额对其进行排序。为此,我希望能够使用检查每个元素是否可排序IComparable。 我需要使用接口来做到这一点。到目前为止,我有以下代码: public interface IComparable { decimal CompareTo(BankAccount obj); } 但是我不确定这是否是正确的解决方案。有什么建议吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.