惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
aimingoo的专栏
aimingoo的专栏
Jina AI
Jina AI
Microsoft Security Blog
Microsoft Security Blog
IT之家
IT之家
V
Visual Studio Blog
量子位
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 聂微东
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
大猫的无限游戏
大猫的无限游戏
Y
Y Combinator Blog
Stack Overflow Blog
Stack Overflow Blog
D
Docker
MyScale Blog
MyScale Blog
小众软件
小众软件
云风的 BLOG
云风的 BLOG
美团技术团队
Microsoft Azure Blog
Microsoft Azure Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 【当耐特】

C#

.NET 11 的 async 性能改进过于逆天 - V2EX macos10.15 上如何配置 vscode C#环境 asp net core 的工作站模式和服务器模式的区别 C#上位机开发是用 winform 那种传统工业风还是 WPF 现代风 paddleocr 的 C#集成问题 C#中异步相关的问题 .NET 换新的异步编程模型了,性能很强 想念 C# 200 块有偿求助 C#高速读取串口,导致软件闪退的问题。 老师,我太想进步了——关于 C#学习 visual studio 2022 代码提示消失 Cursor 生成的代码有个大坑,排查了一晚上才找出原因 C# 有哪些显著的缺点? 有没有 Sematic Kernel 可以落地的应用推荐? 请教下 C#有没有办法用装饰器全局监控方法执行时间 想用 c#的 mvc 实现一个功能. Unity 双击 C#脚本默认打开 Visual Studio 没有代码提示如何解决? 请问 c#有没有一些能规范学习的生产管理系统开源项目? C#串口通信问题 求教 C# 怎么同时交叉编译 windows Linux mac ?跟 go 一样 ClosedXML 如何对一列数据设置高亮重复项?(高亮重复项是 Excel 的一种功能;不能手动给重复单元格设置背景颜色,这样的话用户删除重复项后不会自动去除高亮) 求推荐软件开发练习项目的教学视频或书籍 如何在 visual studio 2022 中新建单元测试项目时默认使用最新版本? C#有像 C++的 libevent 同样定位的高性能跨平台网络库吗? 求助,如何正確劫持系統 DLL 調用 C#生态里有啥简单一点的容易上手的开源后台管理系统吗? .NET6 HttpClient 无反应也不超时? 关于.NET6 httpclient 用 IPV6 还是 IPV4 的疑问 关于 C#调用 DLL 的疑惑 C#程序员开发手机页面有什么适合的 UI 框架?
既然已经继承了 BCL 中的 IComparable 接口,为什么还要自己...
huzhikuizainali · 2023-10-10 · via C#

问题简述:书中说数组排序可以使用 Array.Sort 方法。但是如果你自己写了一个类 Myclass ,然后实例化一个 Myclass 类型的数组,就没有办法使用 sort 方法排序,因为 Array 类的 Sort 方法其实依赖千一个叫作 IComparable 的接口,它声明在 BCL 中,包含唯一的方法 CompareTo 。IComparable 接口的声明。注意,接口主体内包含 CompareTo 方法的声明,指定了它接受一个 object 类型的参数。尽管该方法具有名称、参数和返回类型,却没有实现。尽管在接口声明中没有为 CompareTo 方法提供实现,但 IComparable 接口的 NET 文档中描述 了该方法应该做的事情,你可以在创建实现该接口的类或结构时参考。文档中写道,在调用 CompareTo 方法时,它应该返回以下几个值之一:

1 、负数值如果当前对象小于参数对象;

2 、正数值如果当前对象大于参数对象;

3 、零如果两个对象在比较时相等。

Sort 使用的算法依赖于使用元素的 CompareTo 方法来决定两个元素的次序。int 类型实现了 IComparable, 但是 MyClass 没有,因此当 Sort 尝试调用 MyClass 不存在的 CompareTo 方法时会抛出异常。

---------太好了,只要我的 Myclass 继承了 IComparable 接口。就可以愉快的使用 sort 方法了吧?可是看到下面代码的时候我就沉默了。你看第三行,它怎么自己实现了 CompareTo 方法。难道我继承了 IComparable 接口不就是不想重复造轮子么?如果我自己重写 CompareTo ,那还不如不继承接口,自己直接手写 sort 方法不就完了? 难道 BCL 中就没有自己的 CompareTo ?如果没有自带的 CompareTo ,那么当你对标准数组排序调用 sort 方法时,sort 调用的是谁的 CompareTo 方法呢?