- 博客(82)
- 收藏
- 关注
原创 i18n在本地可以运行,打包之后运行不了只显示键名
忙活了1天,最后发现是版本的问题,发现依赖用的是next,是alpha版本。最后降级成9.版本,就可以了。
2025-12-30 10:09:04
63
原创 asp . net core web api
正式开始创建完成后得到一个模版我们要对文件目录有一个了解你上传的截图显示的是一个标准的的文件目录结构(在 Visual Studio 中)。下面我来为你详细解释每一个文件和文件夹的含义,帮助你理解这个项目的整体架构。
2025-12-03 10:57:58
854
原创 aps . net core0.1
DI 生命周期:Transient(每次新建)、Scoped(每请求一个)、Singleton(全局唯一)中间件:基于请求委托,构成请求处理管道异步编程asyncawait是高效处理 I/O 的核心,避免阻塞线程。
2025-12-03 10:44:27
326
原创 .net core 微服务0、引言
可实现一致的开发、测试与生产环境,大幅提升部署效率与可移植性。,避免与其他服务共享数据库。这种设计确保了服务之间的。——可根据负载独立扩缩容特定服务。,是实现真正自治微服务的关键原则之一。此外,微服务天然支持。
2025-12-03 09:34:34
203
原创 C#多线程1-3启动线程的基本语法
场景代码基础线程(无参)基础线程(带参)Lambda 线程现代推荐方式💡建议学习时了解Thread实际开发优先用Task。
2025-11-27 09:27:14
250
原创 C#中级49、什么是预处理器指令
排名指令主要用途使用频率1#if#endif条件编译(Debug/Release/平台区分)⭐⭐⭐⭐⭐2#region#endregion代码折叠,提升可读性⭐⭐⭐⭐3#warning编译时警告(TODO、废弃提醒)⭐⭐⭐4#error编译时错误(禁止非法配置)⭐⭐。
2025-11-23 11:41:38
396
原创 C#中级48、Debug版本和Release版本有什么区别
关键点DebugRelease用途开发调试生产发布性能慢快可调试性强弱代码行为与源码一致可能被优化改变是否部署❌ 绝对不要✅ 应该使用🧠记住“Debug 是给开发者看的,Release 是给用户跑的。两者互补,缺一不可。在实际项目中,务必确保 Release 版本经过充分测试——因为那才是用户真正使用的版本!
2025-11-23 11:38:10
551
原创 C#中级46、什么是模拟
关键点说明模拟是什么用于测试的“假”对象,替代真实依赖核心目的隔离被测代码,实现快速、可靠、可重复的单元测试关键能力预设行为 + 验证交互C# 工具最佳实践模拟接口、只模拟外部依赖、结合集成测试🧠记住“好的单元测试不关心世界是否正常,只关心你的代码在给定条件下是否正确响应。掌握模拟技术,你就掌握了高质量单元测试的钥匙——这是专业开发者的核心技能之一!🔑。
2025-11-23 11:29:27
651
原创 C#中级45、什么是组合优于继承
对比项继承组合关系is-a耦合度高(紧耦合)低(松耦合)灵活性编译时固定运行时可变扩展性差(类爆炸)好(插件式)测试难度高低适用场景严格的类型分类行为复用、功能组装🧠记住“继承让你获得能力,但组合让你选择能力。在 C# 开发中,优先问自己:“我是在描述一种新类型,还是在组装已有功能?如果是后者——果断选择组合!问题仅仅使用组合的问题是什么如果我们决定不完全使用继承,我们使定义确实处于是关系中的类型变得更加困难。即一个类型是另一个类型的关系。什么是转发方法。
2025-11-23 10:57:52
740
原创 C#中级44、什么是控制反转
关键点说明IoC 是什么把对象创建和依赖管理的控制权交给外部如何实现主要通过依赖注入(DI)谁来管理IoC 容器(如 .NET 的核心价值解耦 + 可测试 + 可维护最佳实践构造函数注入 + 接口抽象 + 在组合根注册🧠记住“Don’t call us, we’ll call you.”(好莱坞原则)—— 不要自己去找依赖,让框架把依赖送上门。问题什么是callback是作为参数传递给其他代码的可执行代码,通常使用func和action实现框架和库的区别是什么。
2025-11-23 10:44:34
598
原创 C#中级43、什么是事件
/ 自定义事件数据set// 订阅Console.WriteLine($"温度变为: {e.NewTemperature}°C");// 触发事件关键点说明事件是什么对象发出的通知信号如何定义如何触发MyEvent?如何订阅核心价值解耦 + 异步通知 + 响应式编程基础🧠记住“事件不是方法,而是一种契约:‘当我发生变化时,我会告诉你’。在 C# 开发中,从 WinForm 按钮点击到 ASP.NET Core 中间件,事件无处不在。掌握它,你就掌握了 .NET。
2025-11-21 17:19:05
765
原创 C#中级什么是观察者设计模式
关键点说明目的解耦对象间的一对多依赖核心“订阅-发布”机制C# 实现手写接口 或 使用eventdelegate本质好莱坞原则:“别打电话给我们,我们会打给你”🧠记住“观察者模式不是为了复杂化代码,而是为了让变化的通知变得自动化、可扩展、无侵入。在现代 C# 开发中,你几乎每天都在用它——只是可能没意识到而已(比如写掌握它,你就掌握了事件驱动编程的基石!
2025-11-21 10:10:37
635
原创 C#中级41、什么是装饰器设计模式
关键点说明本质组合优于继承的典范核心所有角色实现同一接口,装饰器持有被装饰对象优势动态、灵活、可组合、避免类爆炸典型应用I/O 流、UI 渲染、中间件管道(如 ASP.NET Core)🧠记住“装饰器不是改变对象,而是给对象穿上一件件功能外套——脱掉哪件,功能就少哪样。在 .NET 开发中,理解装饰器模式能帮你更好地使用Stream、构建中间件、设计可扩展的业务逻辑。它是面向对象灵活性的完美体现!实现装饰器的步骤1、使装饰器实现与被装饰对象相同的接口2、并使装饰器拥有一个实现此接口的对象。
2025-11-21 09:20:19
599
原创 C#中级40、什么是模版方法设计模式
/ 🧩 模板方法:定义算法骨架(通常为 sealed 或 final,防止被重写)// 相同步骤Brew();// 不同步骤 → 子类实现// 相同步骤// 可能不同 → 子类实现// 相同步骤:父类直接实现private void BoilWater() => Console.WriteLine("烧开水...");private void PourInCup() => Console.WriteLine("倒入杯中...");// 🔴 抽象方法:强制子类实现关键点说明目的。
2025-11-21 08:57:11
506
原创 C#中级39、什么是依赖注入设计模式
关键点说明本质控制反转(IoC)的一种实现核心“不要自己 new,让别人给你”方式构造函数注入(首选)、属性注入、方法注入工具.NET 内置 DI 容器(价值解耦、可测试、可维护、可扩展💡记住“依赖注入不是为了用框架,而是为了写出干净、灵活、可测试的代码。问题答案总得有人new,是谁?DI 容器(如 .NET 的我在哪看到new?看不到—— 容器在幕后自动完成我需要手动new吗?不需要(除了极少数 POCO 对象如 DTO)第一个对象谁创建?
2025-11-20 10:08:23
1547
原创 C#中级8、什么是缓存
维度效果性能响应时间降低 10~1000 倍吞吐量系统 QPS 显著提升成本减少数据库/外部 API 调用,节省资源用户体验页面加载更快,操作更流畅🧠记住“缓存不是银弹,但没有缓存,现代高性能系统寸步难行。单机用分布式用RedisWeb API 用。
2025-11-20 08:59:50
624
原创 C#中级、double和decimal有什么区别
double64 位双精度浮点数,基于IEEE 754 标准速度快、范围大,但有舍入误差→ 适合科学计算、图形、物理模拟。decimal128 位高精度十进制数无二进制舍入误差,专为金融和货币计算设计 → 精确但速度慢、范围小。问题答案哪个更精确?decimal(十进制无误差)哪个更快?double(硬件加速)存钱用哪个?必须用decimal0.1 能精确表示吗?double❌,decimal✅字面量怎么写?double3.14;decimal3.14m💡记住double为速度而生,
2025-11-19 17:46:49
935
原创 C#21、checked关键字是什么
checked= “宁可崩溃,也不返回错误结果”unchecked= “速度优先,后果自负”关键点说明作用捕获整数溢出异常默认行为unchecked(静默溢出)推荐使用金融、安全敏感、调试场景替代方案对超大数使用💡记住“在需要精确结果的地方,永远不要信任默认的整数运算。用checked为你的关键计算加上安全锁!
2025-11-19 17:11:04
313
原创 C#中级20、二进制数系统是如何工作
关键点说明基数2(只用 0 和 1)位权从右到左:2⁰, 2¹, 2², 2³...转换二进制 → 十进制:按权展开求和十进制 → 二进制:除 2 取余倒序计算机意义所有数据(数字、文字、图像)最终都是二进制硬件基础晶体管的“开/关”状态对应 1/0🧠记住“计算机不懂‘5’或‘A’,它只懂 0 和 1。二进制是连接人类世界与机器世界的桥梁。问题为什么编程中的算术运算会产生意外结果。
2025-11-19 09:33:36
593
原创 C#中级、19什么是模式匹配
模式类型用途类型模式属性模式关系/逻辑模式列表模式弃元模式..或忽略部分🧠记住“模式匹配 = 解构 + 条件判断 + 变量声明”三位一体。它让 C# 从“面向对象”走向“面向数据”,是现代 C#最优雅、最强大的特性之一。如果你还在写一堆... },是时候升级到模式匹配了!😊在实际使用中,可以将发送给plc的数据,在发送前做一个模式匹配,例如将float转化成uint类型。
2025-11-19 09:23:44
381
原创 C#中级、什么是序列化
set;set;要点说明本质对象 ↔ 标准化数据格式核心方法首选格式JSON必备条件公共无参构造函数 + 可访问属性黄金法则绝不反序列化不可信输入!🧠记住“序列化让对象突破内存边界,走向世界。用json,保存对象的快照,或者存储记录。反序列化将文件内容转换成程序对象。
2025-11-19 09:01:37
352
原创 C#中级3、using关键字的作用
类型作用典型场景using语句自动释放资源文件操作、数据库连接、网络请求using指令引入命名空间或创建别名减少代码冗余,解决命名冲突直接访问静态成员简化频繁使用的静态方法(如ConsoleMathusing语句→资源管理(安全释放)using指令→代码简化(省去命名空间)→静态成员快捷访问。
2025-11-18 10:58:29
342
原创 C#中级2、is和as关键字有什么区别
关键字作用安全性返回值is检查对象是否是指定类型(只判断,不转换)安全boolas尝试将对象转换为指定类型(安全转换)安全转换后的引用,或null(失败时)❗ 两者都不会抛出(与直接强制转换(T)obj不同)。你想要...用哪个?只是判断类型is判断并立即使用转换后的值is模式匹配(安全转换,且后续多次使用as(仅限引用类型/可空值类型)确定类型并强制转换(不怕异常)(Type)obj(一般不推荐)🧠记住is问‘是不是’,as说‘试试看,不行就 null’。在现代 C# 开发中,is。
2025-11-18 10:52:46
408
原创 C#中级1、元祖和值元组有什么区别
Tuple:.NET Framework 4.0 引入的引用类型(class),分配在堆上,有性能开销。ValueTuple:C# 7.0 引入的值类型(struct),分配在栈上(或内联),性能更高、语法更简洁,是现代 C# 的推荐方式。TupleValueTuple类型class(引用)struct(值)性能慢(堆分配)快(栈/内联)语法冗长简洁 + 命名支持解构不支持原生支持现代 C#❌ 已过时✅ 首选🧠记住“新项目一律用(a, b),老项目逐步替换Tuple。问题。
2025-11-18 10:42:02
486
原创 C3#50、SOLID原则
原则解决的问题SRP类太臃肿,职责不清OCP需求变更导致大量修改LSP继承导致行为异常ISP接口污染,强迫实现无用方法DIP代码紧耦合,难以替换组件“高内聚,低耦合;重抽象,轻实现;单一职责,灵活扩展。
2025-11-18 10:16:29
219
原创 C#45、什么是工厂方法设计模式
是用于创建对象的方法,用作公共构造函数的替代方法,用于提高可读性。将对象创建过程与对象使用过程分离,避免代码重复并减少耦合。用于将代码分出不同的部分,是每一个部分解决一个单独的问题。使用工厂方法的好处是什么。什么是静态工厂设计模式。
2025-11-18 10:04:47
104
原创 C#桥接设计模式
组合优于继承,写了这么久go,突然意识到go使用结构体的时候用了很多桥接模式,一个结构体中拥有另一个结构体的属性。它是一个原则,通过使用组合而不是继承来设计多态和可重用代码更好。什么是组合而不是继承。
2025-11-17 22:07:11
100
原创 C#43、什么是适配器设计模式
问题,如果在开发中有一个与需求不兼容的接口,你想调整它,你会使用什么设计模式?适配器它允许一个类的接口转换成客户期望的接口。
2025-11-17 21:58:48
70
原创 C#21、什么是扩展方法
必须满足3 个条件定义在一个 static类中方法本身是 static的第一个参数使用 this关键字+ 要扩展的类型。
2025-11-16 18:03:15
876
原创 C#31、接口和抽象类的区别是什么
接口:定义“能做什么”(行为契约),完全抽象,强调“是什么能力”。抽象类:定义“是什么”(类型基类),可包含部分实现,强调“属于什么类别”。接口。
2025-11-15 09:50:06
889
原创 C#22、什么是IEnumerable
// 当前元素// 移动到下一个元素,返回是否还有// 重置(很少用)📌 你不需要手动实现这些(除非自定义集合),但要理解其工作原理。
2025-11-15 09:18:14
844
原创 C#20、什么是LINQ
在 C# 中,是 .NET 提供的一套强大而统一的,让你可以用类似 SQL 的方式,(如数组、列表、数据库、XML 等)。。
2025-11-15 09:17:57
596
原创 C#24、深拷贝和浅拷贝的区别是什么
浅拷贝:只复制对象本身,引用类型的字段仍指向原对象的同一内存地址(共享数据)。深拷贝:不仅复制对象本身,还递归复制所有引用类型成员,新旧对象完全独立(不共享任何数据)。特性浅拷贝深拷贝值类型字段复制值复制值引用类型字段复制引用(共享对象)复制对象(全新实例)内存占用小大性能快慢(尤其嵌套深时)实现难度简单(较复杂(需递归处理)适用场景对象无引用类型,或允许共享数据需要完全独立的副本(如撤销操作、多线程)
2025-11-15 09:17:39
851
原创 C#16、什么是静态类
/ ❌ 编译错误!静态类不能有实例成员public void InstanceMethod() { } // ❌ 同样错误静态类 = 不能 new、不能继承、全是静态成员的工具箱。当你想写一个像Math或Console那样的功能集合时,就用!问题静态类可以定义构造函数吗?静态类不能定义实例构造函数,但它可以有静态构造函数什么是静态构造函数?能不能用this在静态方法中不能。
2025-11-14 09:28:34
379
原创 C#17、三元条件运算符的作用是什么
在 C# 中,是一种简洁的 if-else写法,用于根据条件。它的语法非常紧凑,常用于简化简单的条件赋值逻辑。
2025-11-14 09:28:25
230
原创 C#15、static关键字的作用是什么
在 C# 中,static关键字用于表示。。这是 C# 面向对象编程中的一个核心概念,尤其适合定义工具方法、共享数据或全局功能。
2025-11-14 09:26:30
418
原创 C#18、null合并运算符和null条件运算符的作用是什么
运算符名称作用典型场景??null 合并运算符“左边为 null 就用右边”提供默认值?null 条件运算符“对象不为 null 才访问成员”安全链式调用。
2025-11-14 09:26:18
7564
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅