问题标签 [icomparable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Java比较器覆盖c#中的等效项
我想将以下类从 java 转换为 C#:
java - 扩展可比较的泛型
我正在用 Java 开发一个基于模板的类,它实现了各种树结构(例如标准二叉树、红黑树或 B-Tree)。我的想法是让它像 Java Collections 中的各种列表一样完成。那是一个接口类,然后由指定的树扩展。但是,我遇到了一个奇怪的问题:
看起来Java认为对象是不同类型的......如何解决这个问题?
这是我的一段代码:
树.java
BSTree.java
编辑:感谢您的建议,我能够将错误数量减少到 5 个。它们是:javac -d ../bin *.java
现在,我的代码有它Node<T>
并且Tree<T>
缺少它。但是还有什么问题?
c# - 有没有办法消除 IComparable运算符重载而不重复大量代码?
我有一堆实现IComparable<T>
. 因为这些类型实现了该接口,所以提供以下重载是有意义的:
这是大量重复的代码。是否有一些方法可以创建一个抽象类或其他东西(例如 C++'s std::rel_ops
),这样可以更容易地实现这些?
c# - 如何在 C# 中处理接受 IComparable 的通用方法的 double.NaN
我有一个通用的GetMinimum
方法。它接受 IComparable 类型的数组(所以它可能是string[]
or double[]
)。在double[]
我如何实现此方法以忽略double.NaN
值的情况下?(我正在寻找好的做法)
当我通过这个数组
它返回 double.NaN!
c# - double.NaN 和 double.NegativeInfinity 的 CompareTo 行为
我在 C# (.Net 4) 中进行了一些统计操作,double[]
然后我发现CompareTo
方法和double.NaN
. 当我尝试这段代码时:
这意味着double.NaN
比double.NegativeInfinity
! 谁能解释为什么会这样?
c# - IComparable 需要对列进行排序
我的 DevExpress xtragrid 中的一列不是排序、分组或过滤。对类似问题的回答表明我需要实现 IComparable,但是当我这样做时,它根本不再显示在列中。
我做错了什么?
更新:
在DevExpress上询问...
c# - 可比的.CompareTo 在 Sort 中与 null 进行比较
我想借助IComparable<T>.CompareTo
名为. 我写T
Path
令我惊讶的是,该方法
从课堂上
从Sort()
with调用other==null
。我更惊讶的是,在第一个代码块中,抛出了第二个异常,这意味着shortest
在排序之后而不是之前包含一个空值。
c# - 使用 IComparable 对对象进行排序
我正在尝试IComparable
在我的自定义对象中实现接口,以便List.Sort()
可以按字母顺序对它们进行排序。
我的对象有一个称为_name
字符串类型的字段,我希望它以此为基础进行排序。这是我实现的方法:
不确定我是否做错了什么,或者这只是字符串的CompareTo
工作方式,但基本上我的 List 是这样排序的:
- 测试升级
- 测试升级 10
- 测试升级 11
- 测试升级 12
- 测试升级 13
- 测试升级 14
- 测试升级 15
- 测试升级 2
- 测试升级 3
- 测试升级 4
- 测试升级 5
我希望它们像这样排序:
- 测试升级
- 测试升级 2
- 测试升级 3
- ...ETC
c# - 列表到 IEnumerable
我可以将 int 隐式转换为 IComparable。我还可以将列表或数组转换为 IEnumerable。
但是为什么我不能将 List 隐式转换为 IEnumerable?
我使用 .net framework 4.5 和 Visual Studio 2012 Ultimate 对此进行了测试。
测试代码:
c# - Sort() 和 CompareTo() 方法的内部工作
我一直试图弄清楚该CompareTo()
方法在内部是如何工作的,但我失败了。我搜索了这个站点并阅读了一些帖子,我想我已经在 MSDN 中看到了关于这个主题的所有内容,但我似乎不明白。一个 MSDN 示例:
这是该CompareTo()
方法实现的 MSDN 示例。我理解这一点,我理解IComparable
接口是如何工作的,如果我理解正确,当我使用该ArrayList.Sort()
方法时会调用它。
我不明白的是:程序何时传递CompareTo(object obj)
方法的参数?或者换句话说,该Sort()
方法是如何工作的?我的意思是,这段代码将一个温度实例与另一个温度实例进行比较,但是程序何时或如何获取第二个温度实例以进行比较?我希望我的问题是有道理的。
我已经尝试将过程打印到屏幕上,CompareTo()
所以也许我可以对输出进行逆向工程,但我更加困惑自己。
编辑:也许如果我一步一步来,我可以更好地解释自己。假设我有 3 个温度对象: 34、45、21 在一个ArrayList
. 当我打电话时ArrayList.Sort()
,该CompareTo()
方法被称为喜欢34.CompareTo(45)
吗?然后45.CompareTo(21)
呢?返回的整数在第一次比较中为 1,在第二次比较中为 -1?如果我仅CompareTo()
在 obj(参数)为 null 时才定义返回 1 的方法,那么这些整数是如何返回的?我没有定义任何返回 -1 或 0 的东西。就好像我正在实现一个已经实现的方法。CompareTo()
在已经定义返回 -1、0 和 1的方法时定义它。