摘要: Task.WaitAll 和 Task.WhenAll 是两个不同的方法,它们都用于等待一组任务完成,但它们之间存在一些重要的区别。 Task.WaitAll WaitAll 是一个同步方法,它会阻塞当前线程直到所有指定的任务完成。这意味着如果你在一个需要响应用户输入的线程上调用 WaitAll,那 阅读全文
posted @ 2024-07-29 21:57 .NET每天都很酷 阅读(229) 评论(0) 推荐(0) 编辑
摘要: in 关键字与逆变(contravariance)有一定的关系,但它们在C#中的用途和应用场景是不同的。让我们先澄清这两个概念: 逆变(Contravariance) 逆变是指泛型类型参数的一种变异性,它允许一个类型参数的协变类型(covariant type)与该类型参数的逆变类型(contrav 阅读全文
posted @ 2024-07-29 21:48 .NET每天都很酷 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 接口(Interface)和抽象类(Abstract Class)都是面向对象编程中用于实现多态性的工具,但它们之间存在一些重要的区别。下面我将详细介绍接口和抽象类的不同之处以及它们的相似之处。 接口(Interface) 定义: 接口是一组方法、属性、索引器和事件的集合,它定义了对象应该具备的行为 阅读全文
posted @ 2024-07-29 21:38 .NET每天都很酷 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 在C#中,async void 和 async Task 用于定义异步方法,但它们之间有一些重要的区别。下面我将详细解释这两种方法签名的区别以及何时使用它们。 async Task 定义: async Task 方法返回一个 Task 对象,表示一个异步操作的完成状态。 这种方法签名通常用于异步方法 阅读全文
posted @ 2024-07-29 21:33 .NET每天都很酷 阅读(890) 评论(0) 推荐(0) 编辑
摘要: 在.NET Framework和.NET Core中,Task 和 Thread 都是用来实现并发编程的重要组成部分,但它们之间有着本质的区别。下面我将解释这两者的不同之处以及各自的用途。 Thread(线程) 定义:Thread 类代表了一个单独的执行流,它是在操作系统级别存在的实体,每个线程都有 阅读全文
posted @ 2024-07-29 21:30 .NET每天都很酷 阅读(333) 评论(0) 推荐(0) 编辑
摘要: override 用途: override 用于在派生类中重写基类中的虚方法或抽象方法。 重写的方法必须与基类中的方法具有相同的签名(方法名、参数列表和返回类型)。 基类中的方法必须声明为 virtual、abstract 或已经由另一个 override 方法重写。 多态性: override 支 阅读全文
posted @ 2024-07-29 21:24 .NET每天都很酷 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 首字母指代概念 S 单一功能原则 认为“对象应该仅具有一种单一功能”的概念。 O 开闭原则 认为“软件应该是对于扩展开放的,但是对于修改封闭的”的概念。 L 里氏替换原则 认为“程序中的对象应该是可以在不改变程序正确性的前提下被它的子类所替换的”的概念。 参考契约式设计。 I 接口隔离原则 认为“多 阅读全文
posted @ 2024-07-29 09:09 .NET每天都很酷 阅读(7) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示