草庐IT

IComparable

全部标签

c# - IComparable 魔法 - 为什么它是有效的陈述?

我不明白为什么它会起作用......classProgram{staticvoidMain(string[]args){IComparable.Equals(12,3);}}IL代码:.methodprivatehidebysigstaticvoidMain(string[]args)cilmanaged{.entrypoint//Codesize21(0x15).maxstack8IL_0000:nopIL_0001:ldc.i4.s12IL_0003:box[mscorlib]System.Int32IL_0008:ldc.i4.3IL_0009:box[mscorlib]Syst

c# - 为什么 List<>.OrderBy LINQ 在 Debug模式下比 IComparable+List<>.Sort 更快?

我感兴趣的是使用LINQ或通过实现IComparable接口(interface)和List.Sort对我的类进行排序是否会更快。当LINQ代码更快时,我感到非常惊讶。为了进行测试,我使用不太恰当的名称TestSort创建了一个非常简单的类,实现了IComparable。classTestSort:IComparable{privateintage;privatestringgivenName;publicintAge{get{returnage;}set{age=value;}}publicstringGivenName{get{returngivenName;}set{givenN

c# - 将结构转换为通用接口(interface)时是否有装箱/拆箱?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Structs,InterfacesandBoxing来自MSDN:http://msdn.microsoft.com/en-us/library/yz2be5wk.aspxBoxingistheprocessofconvertingavaluetypetothetypeobjectortoanyinterfacetypeimplementedbythisvaluetype.但是通用接口(interface)呢?例如,int派生自IComparable和IComparable.假设我有以下代码:voidfoo(

c# - 如何使用 IComparable 接口(interface)?

我需要一个基本示例来说明如何使用IComparable接口(interface),以便我可以按升序或降序以及我正在排序的对象类型的不同字段进行排序。 最佳答案 好吧,因为你正在使用List只使用Comparison会简单得多,例如:Listdata=...//sortbynamedescendingdata.Sort((x,y)=>-x.Name.CompareTo(y.Name));当然,对于LINQ,您可以只使用:varordered=data.OrderByDescending(x=>x.Name);但是你可以在List中重新

php - 代码是否符合 Liskov 替换原则?

在升级之前,我正在PHP5.4上测试我现有的代码。我发现以下代码不再有效,因为PHP收紧了它的继承模型。由于收紧,我一直在阅读SOLID,特别是Liskov'ssubstitutionprinciple(我是一个自学成才的程序员)这样我就可以改进我的代码并且不会遭受future的“紧缩”。interfaceIComparable{publicfunctionequals(self$other);}classAimplementsIComparable{protected$var;publicfunction__construct($v){$this->var=$v;}publicfun

java - 循环泛型 : interface IFoo <T extends IFoo <T>>

这是Java中一个众所周知的习语。参见例如thisSOdiscussion.所以基本上要定义一个接口(interface),实现它的类需要有一个方法来与它们类的对象进行比较,你会这样做:publicinterfaceIComparable>{publicintcompare(Titem);}(注意:这显然是解决特定用例的一种不必要的复杂方法-请参阅thispost-但我正在询问如何解释递归语法,不要介意特定应用程序)。简而言之,这是一个递归定义,递归没有明显的结束,我看不出编译器/类型系统是如何做到这一点的。此外,尝试用文字表达(“IComparable是一个类,其实例可以与实现ICo

java 8 - Icomparable<T> 的注释 compareTo <T> 也添加了注释 compareTo(Object o)

我有注释packagejavaannotationtest;importjava.lang.annotation.*;@Target({ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)public@interfaceCustomAnnotation{}这适用于以下类中的compareTopackagejavaannotationtest;publicclassCustomerimplementsComparable{@Override@CustomAnnotationpublicintcompareTo(Customero)

c# - 至少一个对象必须实现 IComparable

varlistair=empcon.OrderBy(x=>x.CustomerConnection.OrderBy(y=>y.Id)).ToList();当我使用此语句时出现异常“至少一个对象必须实现IComparable”我该如何解决这个问题? 最佳答案 当我写错时,我的查询遇到了这个问题:IEnumerablerelations=fromrintree.OrgRelationsorderbyr.ParentUnit,r.ChildUnitselectr;这是因为父单位和子单位都是与此OrgRelation实体相关的OrgUnit

c# - 至少一个对象必须实现 IComparable

varlistair=empcon.OrderBy(x=>x.CustomerConnection.OrderBy(y=>y.Id)).ToList();当我使用此语句时出现异常“至少一个对象必须实现IComparable”我该如何解决这个问题? 最佳答案 当我写错时,我的查询遇到了这个问题:IEnumerablerelations=fromrintree.OrgRelationsorderbyr.ParentUnit,r.ChildUnitselectr;这是因为父单位和子单位都是与此OrgRelation实体相关的OrgUnit

c# - 为什么在实现 CompareTo 时必须重载运算符?

假设我有一个实现IComparable的类型。我原以为运算符==是合理的,!=,>,,>=和会通过调用CompareTo自动“正常工作”,但如果我想使用它们,我必须覆盖它们。从语言设计的角度来看,这样做有充分的理由吗?在任何情况下它对A>B真的有用吗?表现与Compare(A,B)>0不同? 最佳答案 整个情况令人烦恼。C#有太多表达相等和不相等的方式:==!=>=Equals静态方法(调用虚方法)、Equals虚方法、ReferenceEquals方法IComparable和IEquatable接口(interface)它们都有微