问题标签 [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# - 方法调用遇到问题并返回正确的值
有问题的方法调用在最后的这个 writeline 调用中
这是该方法所在的费率类
现在,如果我在初始化以下变量时将一个值粘贴到它们中,我可以获得一个返回值,但如果我将它们保留为默认值,我总是从 writeline 中得到 0。
以防万一您需要查看其他内容,剩下的就在这里。
我也有关于排序的问题,我认为它不能正常工作,因为我需要它按 taxOwed 金额排序,但目前是 0 和我的问题。
c# - 对于这种情况,我应该使用什么排序策略?
我有一个字符串列表,其中显示了电影所属类别的名称。我让一个类定义该列表,实现 List<String> 和 IComparable 接口,以便在 PivotViewerStringProperty 中使用,如下所示:
这里的重点是一部电影应该属于许多类别,我想要一个排序策略,这样它就可以制作 pivotviewer 并按每个类别对电影数据库进行排序。因此,它应该在应用程序运行时同时在两个或多个类别中显示同一部电影。
我应该使用什么排序策略?
c# - 是否可以使 IEnumerable实施 IComparable?
如题。
我们都知道,如果我们想让一个类具有可比性并用于排序,即DataGrid,我们将实现IComparable。
但是对于 IEnumerable 我该怎么做呢?
我有一个 IEnumerable 的集合,我们想将每个 IEnumerable 相互比较并进行排序。
所以说一个List<IEnumerable<char>>
包含:
IEnumerable<char> EnumableA
包含:“d”、“e”、“f”
IEnumerable<char> EnumableB
包含:“d”、“e”、“c”
如果我们将集合绑定List<IEnumerable<char>>
到 DataGrid,当我们按 acs 顺序对它们进行排序时,顺序将是EnumableB
第一个,然后EnumableA
是第二个。
我确实想到了解决方案,例如将其存储EnumableA
到一个 implment 的对象中IComparable
,但这将需要创建另一个对象集合,这将是昂贵的。
那么是否有可能或无论如何将一个IComparable
接口和我的排序实现附加到它IEnuerable<char>
以便它可以排序?
c# - 使用 IComparable 比较对象时出现问题
这是我试图开始工作的一些代码。如果一组中的项目与另一组中的项目不匹配,则将 0 添加到所有比较项目的列表中。如果最终列表不包含除 0 以外的任何其他值,则表示第一个集合中的项目在第二个集合中根本不存在。由于某种原因,我在结果列表中不断得到错误的值,所以某处一定有一个错误,只是我似乎找不到它。
c# - IComparable IgnoreCase
我正在编写一个函数来比较 IComparable 类型的 2 个值,如果不相等则抛出。基本上,重新制作断言。是的,我知道我正在重新发明轮子。
工作正常,除了字符串,我希望忽略大小写的选项。“AA”与“AA”
我想在 T 是字符串时专门重写此方法,因此我可以使用 String.Compare 并忽略大小写。拥有另一个参数也很酷,因此用户可以指定是否应忽略字符串(尽管,这对于其他类型(如 int)没有用,因此看起来有点像一个令人困惑/糟糕的设计。我愿意接受这里的建议)。
有没有好的方法来做到这一点?我也愿意更改为与 IComparable 不同的类型,最初认为这是该工作的最佳界面,但现在意识到我可能错了。
c# - 比较两个自定义对象
Filter
根据有时一个,有时是所有属性比较两个对象的最佳方法是什么?我的意思是我有Dictionary<Filter, string>
并且我需要找到所有KeyValuePairs
与使用过的过滤器兼容的东西,例如:
现在使用f1
我想找到两者KeyValuePairs
,但使用f2
我只想找到第一个 KVP,因为Start
在第二个对象中不满足条件Start
+ End
from f2
(它在范围之外)
编辑 字典超出了这个问题的范围。它一定要是。我只需要比较机制。我不创建字典来做到这一点。我需要它来存储一些对我很重要的数据。
c# - 如何在 C# 中为 System.Math 方法使用泛型类
我正在尝试实现类似于以下代码片段的内容。
正如红线所示Math.Min
,IComparable<T>
似乎不起作用。我需要为这个泛型类使用Math.Min
或Math.Max
。将T
是int
或double
或decimal
类型。
我怎么能轻松解决这个问题?
c# - 无法从源类型转换为目标类型
我使用了一个名为 PriorityQueue 的类,就像名字所说的那样,它应该比较元素并指定它们这是优先队列中的比较器类
这就是我比较的
正如我在标题中所说的错误是:无法从源类型转换为目标类型我知道 Coordenada 和对象不一样所以这就是为什么我尝试了转换并且它对我应该做什么没有任何想法?
编辑:这就是我如何使用应该在 Coordenada 中使用函数 CompareTo 的优先级队列
priorityQueue 是一个列表,我会在一段时间内将 2-3 个不同的 Coordenada 对象添加到该列表中,因为我会在每个周期中搜索最小的数字并将其从我的列表中删除,直到我到达我想要的位置
c# - IComparable 的好处作为逆变?
我对方差的经验很少,但是在阅读了相当多的内容之后,我相信我至少了解了基本概念(即方差描述了两种类型的关系之间的关系以及这两种类型的关系类似地投影)。但是,我似乎无法理解IComparable<T>
定义为逆变的意义或好处。乍一看,这实际上似乎阻碍了亚型之间的可比性。我希望有人能够对此事有所了解。
c# - 可修改的 IComparable 实现?
如果我理解正确,IComparable
并且IComparable<T>
旨在允许在一组类型上定义自然或总排序。在任何一种情况下,由CompareTo(Object)
or定义的关系CompareTo(T)
必须是Reflexive、Symmetric和Transitive。
当应用于单个类型甚至整个类型层次结构时,这一切都非常好并且非常适用(假设那些更多派生的类型不需要影响关系的定义)。然而,一旦一个子类型引入了一个状态元素,该元素应该影响它与它派生的那些类型的关系,可比较的接口几乎似乎崩溃了。
提供的代码示例演示了我当前对该问题的解决方案。由于RelationalObject
无法了解实际需要比较的那些类型,其预期目的主要是提供和密封可修改的实现,CompareTo
同时要求派生类型实际实现基于上下文的比较算法。
我想知道,有没有更好的方法来处理这种情况?我意识到我可能只实现一些IComparer
或IComparer<T>
哪些知道并可以处理已知对象的比较;然而,这似乎违背了IComparable
and的目的IComparable<T>
。