- 博客(22)
- 收藏
- 关注
原创 C#委托的概念与使用方法
C# 中的委托是一种强大的机制,它允许将方法作为参数进行传递,并且具有类型安全性。系统委托如ActionFunc和Predicate提供了方便的预定义委托类型,可以用于各种常见的场景。事件委托则是委托在事件驱动编程中的特殊应用,用于解耦事件源和事件处理者。委托的多播特性使得可以将多个方法组合在一起形成调用链,提供了更大的灵活性。通过合理使用委托,可以使代码更加模块化、灵活和可维护。
2025-05-30 08:21:40
648
原创 C#中BackgroundWorker的概念与用法详解
在一个 Windows 窗体应用程序中,需要从网络下载一个较大的文件,为了避免下载过程中 UI 界面卡死,并且能够显示下载进度,同时允许用户取消下载任务,可以使用 BackgroundWorker。在处理此事件时,需要注意不能在该事件处理程序中直接操作 UI 元素,因为此事件是在后台线程中触发的。在这个示例中,当用户点击开始下载按钮时,BackgroundWorker 开始执行后台任务,模拟下载过程并定期报告进度。在主线程中处理此事件,可以在此处更新 UI 组件以显示进度信息,如进度条的值、状态文本等。
2025-05-15 08:40:05
1019
原创 C#23种设计模式(七)抽象工厂
是一种创建型设计模式,它提供了一种方式,可以创建一系列相关或相互依赖的对象,而无需指定它们的具体类。抽象工厂模式强调的是的概念,即每个工厂创建的对象属于一个系列。: 在Open方法中,分别创建了南昌工厂和上海工厂的实例,并使用它们创建对应的鸭脖和鸭架对象,然后调用Print方法打印信息。定义了创建鸭脖和鸭架的抽象方法。和分别实现了抽象工厂类,提供了创建南昌和上海鸭脖及鸭架的具体实现。YaBo和YaJia分别是鸭脖和鸭架的抽象类,定义了Print抽象方法。和分别实现了对应的抽象产品类,提供了具体的Print。
2025-03-18 00:46:53
746
原创 C#23种设计模式(五)享元模式
享元工厂通过字典存储已创建的享元对象,确保相同的对象只被创建一次。客户端通过工厂获取享元对象,从而实现对象的共享,减少内存的使用。这种模式特别适用于需要大量细粒度对象的场景,通过共享对象来提高性能和资源利用率。
2025-03-14 23:35:21
429
原创 C#23种设计模式(四)外观模式
在C#中,外观模式(Facade Pattern)是一种结构型设计模式,旨在通过提供一个统一的接口来简化复杂子系统的使用。外观模式通过一个高层接口将多个子系统的复杂操作封装起来,客户端只需与外观类交互,无需直接处理子系统的复杂性。客户端代码仅依赖外观类,不直接调用子系统类,降低了耦合度。子系统逻辑修改时(如新增权限检查),只需调整外观类或对应子系统,客户端无需改动。子系统类专注于实现特定功能,外观类负责协调它们的工作流程,符合单一职责原则。:客户端只与外观类交互,减少对其他类的依赖。方法,向学生发送通知。
2025-03-14 00:48:32
250
原创 C#23种设计模式(三)组合模式
透明式组合模式:通过在抽象组件类中声明所有管理子节点的方法,使得客户端可以一致地处理叶子节点和分支节点。但叶子节点需要实现这些方法并抛出异常,因为它们不能有子节点。安全式组合模式:通过在抽象组件类中只声明绘制方法,而将管理子节点的方法仅在分支节点类中实现,避免了叶子节点抛出异常的问题。但客户端需要知道对象的具体类型,以便正确调用相应的方法。
2025-03-11 20:54:30
689
原创 C#23种设计模式(二)备忘录模式
这种模式的核心思想是通过创建对象状态的快照(备忘录),并在需要时恢复到该快照状态,从而实现状态的管理。在代码中,MobileOwner类就是发起人,它维护联系人列表的状态,并提供创建备忘录和恢复状态的方法。:可以方便地保存多个状态,并在需要时恢复到任意一个之前的状态,适用于需要频繁保存和恢复状态的场景。管理角色不访问备忘录中的状态信息,只是负责保存和提供备忘录,这符合备忘录模式中管理角色的职责。当需要恢复状态时,发起人从管理角色获取备忘录对象,并使用备忘录中的状态恢复自己的内部状态。
2025-03-08 19:26:38
1027
原创 C#23种设计模式(一) 装饰器模式
装饰者模式是一种结构型设计模式,允许在不改变对象接口的情况下动态地为对象添加新的职责或功能。这种模式通过创建一个装饰类来包装原始对象,并在装饰类中添加新的行为或功能。:定义对象的接口,装饰者和具体对象都实现这个接口。:实现组件接口的具体对象,提供基本功能。:维护一个对组件对象的引用,并实现组件接口。装饰者类通常在其方法中调用被装饰对象的方法,并在需要时添加新的行为。:实现装饰者抽象类,为组件对象添加新的职责或功能。定义组件接口(Phone抽象类)
2025-03-08 17:55:51
296
原创 依赖注入设计模式
依赖注入的核心思想是将一个对象所需的依赖关系从其本身解耦,而是通过外部提供这些依赖,通常通过构造函数、属性或方法参数来实现。在 C# 中,依赖注入(Dependency Injection,DI)是一种设计模式,用于处理组件之间的依赖关系。这样做的好处是,可以更轻松地替换实际的数据库操作实现,例如在测试中使用模拟的存储库来模拟数据库行为,而不必改变。Core 中的内置 DI 容器)能够自动管理依赖项的创建和注入,进一步简化了依赖关系的管理。的实例,而是依赖于外部传入的。例如,考虑一个服务类。
2023-12-15 21:12:21
622
原创 同步与异步
在编程中,异步模型常用于需要处理耗时操作、IO 操作或并行任务的场景,可以提高应用程序的性能和响应性。同步模型适用于简单的操作和顺序执行的场景,但在需要处理大量或耗时的操作时,同步模型可能会导致程序的阻塞和性能问题。当调用一个异步方法时,方法将在单独的线程或任务中执行,而调用者可以继续执行其他操作。需要注意的是,在异步编程中,要正确处理并发访问共享资源、错误处理和线程安全等问题,以避免潜在的并发竞争和错误。但对于大规模、耗时或并发性要求高的操作,异步模式可能更为合适,因为它可以提高性能和系统的并发能力。
2023-12-13 17:42:09
446
1
原创 Vuex模块化
使用模块化,你可以在Vuex store中创建多个模块,每个模块都有自己的state、mutations、actions和getters。这些模块可以相互关联,允许你以分离的方式组织和维护你的应用状态。在Vuex中,模块化允许你将你的store分割成更小的模块,每个模块拥有自己的state、mutations、actions、getters等。通过这样的模块化方式,你可以将状态管理分解成更小的、更易于管理的模块,并在需要时轻松地添加、删除或更新模块。这种模块化的状态管理使得应用程序的结构更清晰、更灵活。
2023-12-12 16:19:34
437
原创 Vue.js中的路由
Vue.js 路由(Vue Router)是 Vue.js 官方提供的用于构建单页面应用程序(SPA)的路由管理库。它允许你通过 Vue 组件来定义页面之间的导航,并提供了在应用程序中导航的一些核心功能。
2023-12-11 16:12:55
380
1
原创 Vue.JS中的插槽
在Vue.js中,插槽(Slot)是一种机制,允许你在父组件中将子组件的内容插入到特定的位置。插槽使得组件更加灵活,可以更好地处理父子组件之间的通信和组合。Vue.js中有两种类型的插槽:具名插槽(Named Slots)和匿名插槽(Unnamed Slots)。
2023-12-11 09:51:33
473
1
原创 Vue.JS中的emit
是用于在子组件中触发自定义事件的方法。它允许子组件向父组件发送消息,或者在兄弟组件之间进行通信。这种通过自定义事件进行组件通信的方式使得组件可以更灵活、解耦,同时提高了代码的可维护性。父组件可以监听并响应这个事件,从而执行一些特定的逻辑。,你可以定义自己的事件,并在适当的时候触发这些事件。是在子组件中定义一个自定义事件,然后通过调用。方法,从而获取了子组件传递的消息,并更新了。中的按钮被点击时,它调用了。以下是一个简单的示例,说明了。
2023-12-10 19:23:40
838
1
原创 Vue.JS中的props
中的值,因为它们被视为来自父组件的不可变的数据。如果子组件需要修改这些数据,可以通过触发事件来通知父组件,从而由父组件修改。如果父组件的数据发生变化,这将会反映在子组件中。这是一种单向数据流的机制,用于在组件之间传递信息。选项来声明它所接收的属性,并在模板中使用这些属性。机制有助于组件之间的解耦和复用,使得组件更容易理解和维护。是一种用于父组件向子组件传递数据的机制。以下是一个简单的示例,演示了如何在Vue.js中使用。向子组件传递数据,子组件通过接收这些。在这个例子中,父组件通过将。
2023-12-10 18:44:49
437
1
原创 Vue.JS中兄弟组件传值
Vuex 是Vue.js的官方状态管理库,允许你在整个应用的任何地方共享状态。通过在Vuex中存储数据,兄弟组件都可以访问和修改这些共享的状态。你可以使用Vue的实例作为事件总线,兄弟组件通过事件的方式进行通信。一个组件触发事件,而另一个组件监听并响应这些事件。在Vue.js中,兄弟组件之间的数据传递通常需要通过父组件作为中介。兄弟组件通过共同的父组件来传递数据。父组件接收一个子组件的数据,并将其作为。触发将数据发送给父组件。父组件接收到数据后,通过。,从而完成兄弟组件之间的数据传递。传递给另一个子组件。
2023-12-10 17:50:17
481
1
原创 Vue.JS中setup入口函数
函数是 Vue 3 中的一个新特性,用于设置和组织组件的逻辑。它是 Composition API 的一部分,提供了在函数式组件中组织代码的一种新方式。它使得组件中的代码可以按逻辑相关性而不是选项分组,有助于提高代码的可读性和可维护性。函数需要返回一个对象,该对象中的属性和方法会暴露给模板使用。等 API 来创建响应式的数据和计算属性,以及定义需要在模板中使用的变量和函数。是一个响应式变量,每次按钮点击时都会增加其值,并且这些变化会反映在模板中。函数中访问组件的属性、插槽、传递的事件等信息。
2023-12-10 17:45:01
856
1
原创 margin的塌陷
- 竖直方向的margin有塌陷现象:小的margin会塌陷到大的margin中,从而margin不叠加,只以大值为准。比如有个A盒子它位于上方,它的margin-bottom是30px,有个B盒子位于它的下方,它的margin-top是50px,那么它们两个盒子之间的间距是为50px,而不是80px (竖直方向的margin不叠加,以大数为准)so(而左右是没有塌陷现象的,可以完美叠加的哦)...
2022-02-20 10:41:14
86
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人