04 2019 档案
摘要:IComparable<T> .NET 里,IComparable<T>是用来作比较的最常用接口。 如果某个类型的实例需要与该类型的其它实例进行比较或者排序的话,那么该类型就可以通过实现IComparable<T>接口来达到此目的。 IComparable<T>只提供了一个方法: 先看一个例子,这里
阅读全文
摘要:通常情况下引用类型的相等性是不应该被重定义/重写的。 例如两个引用类型的变量 x 和 y,如果这样写:if(x == y) {...},那么大家都明白,这个比较的是引用的相等性。 但是有少数情况下,也可以为引用类型重写相等性。 例如这个类: 这个类里面只有两个string类型的属性和字段,那么对它的
阅读全文
摘要:为什么要为值类型重定义相等性 原因主要有以下几点: 值类型默认无法使用 == 操作符,除非对它进行重写 再就是性能原因,因为值类型默认的相等性比较会使用装箱和反射,所以性能很差 根据业务需求,其实际相等性的意义和默认的比较结果可能会不同,但是这种情况可能不较少 所以建议是:所有供外部使用的struc
阅读全文
摘要:在开发API的时候,有时候数据太多了,就需要分页读取。 基于偏移量的分页(Offset-based) 这种方式就是会提供一个每页笔数(page size)来定义返回条目的最大数,提供一个页数(page number)来表示从哪里开始读取数据。 例如: 这句话的意思就是从该表中读取数据,按照Name字
阅读全文
摘要:今天写一下C#里的“==”这个操作符。 原始类型 假象 在刚学C#的时候,我以为C#里的==和.NET里的object.Equals()方法是一样的,就是一个语法糖而已。其实它们的底层机制是不一样的,只不过它们给出的结果在大多数情况下恰好相同。 看个例子: 这俩方法给出的结果都是True。 看起来这
阅读全文
摘要:简介 C#(.NET)的object类里面有三个关于判断相等性的方法: public virtual bool Equals(object obj) public static bool Equals(object objA, object objB) public static bool Refe
阅读全文