问题标签 [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# - 对其中一些为空的 IComparable 对象进行排序
大多数人在编写实现 IComparable<T> 的引用类型(类)时,使用的约定是 null 比任何实际对象都少。但是如果你尝试使用相反的约定,就会发生一些有趣的事情:
运行上述代码时,您会看到空引用未按预期排序。显然,A 和 B 比较时,如果 A 为对象且 B 为空,则使用用户定义的比较,但反之,如果 A 为空且 B 为对象,则使用一些 BCL 比较。
这是一个错误吗?
c# - 自定义 Treeview 的排序
我有一个树视图,需要根据每个节点的标签以及 alpha beta 进行排序。
例如:
- 节点 1,标签 = A,文本 =苹果
- 节点2,标签= B,文本=气球
- Node3,标签= A,文本=帮助
我想对它进行排序,带有标签 A 的节点将是第一个,然后是带有标签 B 的节点。但是,我希望包含标签 A 的节点从 A 到 Z 排序。
(顺序 = Node1,Node3,Node2)
请帮助我,我该怎么做?
提前致谢!
c# - 如何比较泛型类型的值?
如何比较泛型类型的值?
我已将其减少到最小样本:
错误是:
运算符“>=”不能应用于“T”和“T”类型的操作数。
到底怎么回事!?T
已经被限制为IComparable
,即使将其限制为值类型 ( where T: struct
),我们仍然不能应用任何运算符<
、>
、<=
、>=
或. (我知道涉及and的解决方法,但它对关系运算符没有帮助)。==
!=
Equals()
==
!=
所以,两个问题:
- 为什么我们会观察到这种奇怪的行为?是什么让我们无法比较已知的泛型类型的值
IComparable
?它不是以某种方式破坏了通用约束的全部目的吗? - 我该如何解决这个问题,或者至少解决它?
(我意识到已经有一些与这个看似简单的问题相关的问题 - 但没有一个线程给出详尽或可行的答案,所以在这里。)
c# - 如何在 datarow[] 的列中找到最大值?
我有一个简单的问题,但我只是不理解我在此处或 MSDN 中找到的任何示例。(我还是 C# 和所有数据集函数的新手)。
我有一个数据表“tblRoom”,它的列是“建筑”,“公寓”和“房间”,它们都是整数和表的主键(它是公寓的弱实体(这是建筑的弱实体),没有其他属性/列)。
我也有DataRow[] roomCollection
使用以下代码选择建筑物中的特定公寓:
所有这一切都运行良好(我猜......)。现在我想从这间公寓获得房间的最大值(这间公寓的最大房间号)。我试过这些代码无济于事:
我只是没有从工具提示中得到我想在函数中写什么。它在没有 IEnumerable 或 Icomparable 时抛出异常。
我需要写什么来获得房间列中的最大值(int)?任何人都知道“傻瓜的 [something]”,它会向白痴解释它,因为我不明白错误/工具提示的含义,我想在Max()
.
编辑:工具提示建议输入这些(显示相关):
我真的不明白:(
谢谢你,谢伊。
c# - 如何使用“is”来测试类型是否支持 IComparable?
我想在排序之前检查一个类型是否支持 IComparable,但我发现使用“is”检查一个类型是否支持 IComparable 接口并不总是给我正确的答案。例如,typeof(int) is IComparable
返回 false,即使 int 确实支持 IComparable 接口。
我注意到typeof(int).GetInterfaces()
列出 IComparable 并typeof(int).GetInterface("IComparable")
返回 IComparable 类型,那么为什么“is”不能按我的预期工作?
c# - IComparable 和 IComparable
我应该同时实现IComparable
和泛型IComparable<T>
吗?如果我只实现其中一个,是否有任何限制?
c# - Compare() 方法,父子对象排序不完美
我有这个作业。我是初学者C#程序,现在学习C#和Java
作业:编写获取 Drink[] 数组的静态方法,其中 AlcoholDrink 具有不同的酒精值。该方法返回一个包含三个最高酒精值的数组!如果数组中没有那么多酒精饮料,则该方法返回一个空引用!
我试过写这个方法,但它不能正常工作......
原因在 sz[1] = (AlcoholDrink)t[1]; 它是一个饮料对象(非酒精),我不明白为什么它在那里......
或者我的比较方法不完美,可能有错误......我该如何瞄准,非酒精饮料对象(Drink Objects)到数组的末尾?
这是我的 C# 代码:
c#-4.0 - 如何将我的特殊排序实现为 CompareTo
所以我有以下struct
我在某处执行以下操作
现在我想实施System.IComparable<Foo>
例如。的优势.Sort()
。Foo[]
如何将逻辑(从我的特殊/有线OrderBy
/ ThenBy
)转移到int CompareTo(Foo foo)
?
c# - C# 按值对对象进行排序
我想保存一个CollidableActor对象的列表,按它们的属性“ .Position.X ”排序。
我想知道什么是最快(最有效)的方法。起初我想使用 SortedDictionary,然后是 SortedList,但我读到 SortedDictionaries 无论如何都更快。
现在我很困惑,因为我不知道我想要字典还是列表。此外,在实现IComparable接口并创建我的CompareTo()方法时,仅返回.Position.X就足够了吗?
如果没有,根据.Position.X,是否有更好的结构或类可以在我添加/删除它们时快速排序?(我会经常从列表中添加/删除对象;在添加对象时进行排序会更好,还是在使用列表之前进行更新?)。
谢谢你。
编辑:事实上,由于所有对象都是唯一的,某种 HashSet 集合是否可取?谢谢。