网站制作方案怎么写,合肥网页制作公司推荐,广州网站推广奋,如何做网站个人问题产生的地方 原因 对于 double 类型的属性#xff0c;不能直接使用减法运算符进行比较。减法运算符只能用于数值类型#xff0c;而 double 是浮点数类型。 要在 double 属性上进行排序#xff0c;可以使用 CompareTo 方法或者使用自定义的比较器。 更改 要在 double 属性…问题产生的地方 原因 对于 double 类型的属性不能直接使用减法运算符进行比较。减法运算符只能用于数值类型而 double 是浮点数类型。 要在 double 属性上进行排序可以使用 CompareTo 方法或者使用自定义的比较器。 更改 要在 double 属性上进行排序可以使用 CompareTo 方法或者使用自定义的比较器。下面是两种可行的方式 1.使用 CompareTo 方法 list1.Sort((m, n) m.Id.CompareTo(n.Id));使用了 CompareTo 方法来比较两个 double 值的大小 2.使用自定义的比较器 public class DoubleComparer : IComparerdouble
{public int Compare(double x, double y){return x.CompareTo(y);}
}// 在排序时使用自定义的比较器
list1.Sort((m, n) new DoubleComparer().Compare(m.Id, n.Id));这种写法定义了一个名为 DoubleComparer 的自定义比较器类实现了 IComparerdouble 接口的 Compare 方法。然后在排序时使用新建的 DoubleComparer 实例来进行比较。 产生原因 如list1.Sort((m, n) m.Id - n.Id);id为double类型为什么会报错无法将都变了隐式转换为int为什么会报错无妨将lambda表达式转换成预期委托类型 ListT 的 Sort 方法的参数是一个委托用于比较两个元素的大小关系以实现排序功能。这个委托类型的声明如下 public delegate int Comparisonin T(T x, T y);可以将 lambda 表达式中的 m.Id - n.Id 修改为一个返回整数类型的表达式比如 (int)(m.Id - n.Id)。这样就可以将 lambda 表达式转换成预期的委托类型从而成功地实现按照 Id 属性进行排序的功能。 list.Sort((m, n) m.PositionX - n.PositionX); m.PositionX - n.PositionX的结果是一个double 需要强转成int 但是强转的时候会造成精度丢失 如本来是0.3 会变成0导致认为mn是相等的所以保险起见还是用 list.Sort((m, n) m.PositionX.CompareTo(n.PositionX)); CompareTo方法 CompareTo() 方法是用于比较两个值的大小并返回一个整数作为比较结果的表示。 CompareTo() 方法的返回值为整数其含义如下 如果 x 小于 y则返回一个负数通常为 -1。如果 x 等于 y则返回零。如果 x 大于 y则返回一个正数通常为 1。 返回一个整数的好处是可以更灵活地处理比较结果。通过比较结果的正负号可以判断出两个值的相对大小关系并进行相应的逻辑处理。 CompareTo 方法是 IComparable 接口的一部分它定义了一个用于比较对象的方法。因此只要类实现了 IComparable 接口就会拥有 CompareTo 方法。 以下是一些常见的具有 CompareTo 方法的类 Int32, Int64, Double, Decimal 等数值类型这些数值类型都实现了 IComparable 接口并且提供了 CompareTo 方法来比较它们之间的大小关系。String 类型String 类型实现了 IComparable 接口因此它也具有 CompareTo 方法用于按照字典顺序比较字符串的大小。DateTime 类型DateTime 类型也实现了 IComparable 接口并提供了 CompareTo 方法用于比较日期和时间。用户自定义类如果你在自己的类中实现了 IComparable 接口并提供了 CompareTo 方法的实现那么你的类也会具有 CompareTo 方法。