引言
dynamic 是 Framework 4.0
就出现特性,它的出现让 C# 具有了弱语言类型的特性。编译器在编译的时候不再对类型进行检查,默认 dynamic 对象支持开发者想要的任何特性。
引言
yield关键字是 C# 中的一种语言特性,用于在枚举器中简化迭代器的实现。它使得开发人员可以通过定义自己的迭代器来简化代码,而不必手动实现 IEnumerable 和 IEnumerator 接口。
引言
现在模拟一个异步方法抛出了异常:
思考一下, DontHandle()
方法是否能够捕获到异常?
引言
Span
是C# 中的一种结构体,它是一种内存安全的类型,可以用来表示连续的内存区域。Span
可以被用于访问和操作数组、堆上分配的内存和栈上分配的内存。使用 Span
可以避免不必要的内存拷贝,从而提高性能。
引言
深拷贝是指创建一个新对象,该对象的值与原始对象完全相同,但在内存中具有不同的地址。这意味着如果您对原始对象进行更改,则不会影响到复制的对象
引言
策略模式是一种行为设计模式,它允许在运行时选择算法的行为。该模式定义了一系列算法,将它们封装成独立的类,并使它们可以互相替换。这使得算法可以独立于使用它们的客户端而变化。
引言
Task和ValueTask都是用于异步编程的类型。它们都表示一项异步操作的结果,并可以在操作完成后检索该结果。
Task是.NET Framework中异步编程模型(APM)的核心类型之一。它是一个通用类型,可表示任何类型的异步操作。通过使用Task,您可以开始执行异步操作并返回一个表示该操作的任务,然后可以等待该任务以获取操作结果。Task还提供了各种方法来管理任务的执行,例如等待多个任务完成、取消任务等等。
ValueTask与Task不同,ValueTask是一个值类型,而不是一个引用类型。在创建和处理ValueTask时,不需要分配额外的堆内存。如果异步操作非常快速并且几乎总是同步完成,则ValueTask可能比Task更有效率。但是,对于较长时间运行的异步操作,使用ValueTask可能会导致性能下降,因为它可能需要分配堆内存来存储大量的状态信息。
引言
原型模式是一种创建型设计模式,它允许我们创建一个对象的副本,而不需要显式地使用构造函数来创建一个新的对象。这种模式通常用于创建那些具有复杂创建过程或需要大量资源的对象。