摘要: ## 引言 先不论什么是闭包,什么是闭包陷阱,我们开篇先看一段代码: ```csharp static void Main(string[] args) { List lists = new List(); for (int i = 0; i { Console.WriteLine(i); }; l 阅读全文
posted @ 2023-07-19 16:31 NiueryDiary 阅读(829) 评论(0) 推荐(6)
摘要: ## 引言 众所周知,使用线程可以极大的提高应用程序的效率和响应性,提高用户体验,但是不可以无节制的使用线程,为什么呢? ## 线程的开销 线程的开销实际上是非常大的,我们从空间开销和时间开销上分别讨论。 ### 线程的空间开销 线程的空间开销来自这四个部分: 1. 线程内核对象(Thread Ke 阅读全文
posted @ 2023-07-18 19:08 NiueryDiary 阅读(1138) 评论(0) 推荐(7)
摘要: ## 引言 上文[编码技巧 同步锁对象的选定](url)中,提到了在C#中,让线程同步有两种方式: - 锁(lock、Monitor等) - 信号量(EventWaitHandle、Semaphore、Mutex) 加锁是最常用的线程同步的方法,就不再讨论,本篇主要讨论使用信号量同步线程。 ## W 阅读全文
posted @ 2023-07-18 08:10 NiueryDiary 阅读(1043) 评论(2) 推荐(0)
摘要: ## 引言 **yield**关键字是 C# 中的一种语言特性,用于在枚举器中简化迭代器的实现。它使得开发人员可以通过定义自己的迭代器来简化代码,而不必手动实现 IEnumerable 和 IEnumerator 接口。 使用 `yield` 关键字,可以将迭代器中的值一次一个地返回,而不必使用一个 阅读全文
posted @ 2023-07-17 22:42 NiueryDiary 阅读(759) 评论(0) 推荐(1)
摘要: ## 引言 在C#中,让线程同步有两种方式: - 锁(lock、Monitor) - 信号量(EventWaitHandle、Semaphore、Mutex) 线程锁的原理,就是锁住一个资源,使得应用程序在此刻只有一个线程访问该资源。通俗地讲,就是让多线程变成单线程。在C#中,可以将被锁定的资源理解 阅读全文
posted @ 2023-07-13 08:02 NiueryDiary 阅读(750) 评论(0) 推荐(1)
摘要: 引言 软件开发过程中,我们经常会遇到各种设计问题,例如如何管理对象之间的关系、如何优化代码的可复用性和可维护性等等。为了解决这些问题,我们可以使用设计模式。 设计模式是一种被广泛接受的软件设计思想,它提供了一套通用的解决方案,可以帮助我们更好地解决常见的软件设计问题。设计模式是从实践中总结出来的,它 阅读全文
posted @ 2023-07-12 14:36 NiueryDiary 阅读(313) 评论(0) 推荐(0)
摘要: ## 引言 SOLID是五个常见的面向对象设计原则的缩写,其目的是帮助开发者设计易于维护和扩展的软件系统 其中包含**单一职责原则(SRP)**,**开闭原则(OCP)**,**里氏替换原则(LSP)**,**接口隔离原则(ISP)**,**依赖反转原则(DIP)**。 除SOLID之外,后续又增加 阅读全文
posted @ 2023-07-12 08:22 NiueryDiary 阅读(292) 评论(0) 推荐(0)
摘要: ## 引言 **备忘录模式**是一种行为型设计模式,它允许你捕获对象的内部状态,并在不暴露其实现细节的情况下将其保存在外部对象中,从而可以在以后的某个时间点将该对象恢复到先前的状态。 备忘录模式有以下几个主要角色: - **Originator(原发器)**:是需要被保存状态的对象。它可以创建一个M 阅读全文
posted @ 2023-07-12 08:22 NiueryDiary 阅读(31) 评论(0) 推荐(0)
摘要: ## 引言 **访问者模式**是一种行为型设计模式,它允许你在不修改对象结构的前提下定义作用于这些对象元素的新操作。它主要解决了在不修改已有类的前提下,对已有类中的对象进行新操作的问题。 访问者模式有以下几个主要角色: - 访问者(Visitor):访问者角色是一个抽象类或接口,其中定义了访问每个被 阅读全文
posted @ 2023-07-12 08:22 NiueryDiary 阅读(35) 评论(0) 推荐(0)
摘要: ## 引言 **解释器模式**是一种行为型设计模式,它允许你定义一个语言的文法,并且定义一个解释器来解释该语言中的句子。该模式可以用于编写编译器、计算器、查询语言等应用程序。 解释器模式中有以下三个主要角色: - **抽象表达式(Abstract Expression)**:它是所有表达式的抽象基类 阅读全文
posted @ 2023-07-12 08:21 NiueryDiary 阅读(34) 评论(0) 推荐(0)