C#
文章平均质量分 89
scixing
今天是学习.NET的好日子
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
NET 11 Preview 5:C# 15 里更完整的 union、closed 和 unsafe 体验
.NET 11 Preview 5 引入三项 C# 语法增强 联合类型(union):通过public union Pet(Dog,Cat)显式定义值类型范围,支持隐式转换和穷尽性模式匹配,将多态约束从约定转为类型系统保障。 封闭继承(closed):标记closed的基类限制直接派生类型必须位于同一程序集,使编译器能验证模式匹配的完整性,不同于sealed仍允许间接继承。 精准不安全边界:指针声明与获取不再强制unsafe上下文,仅解引用等危险操作需要,提升代码审查精度。 这些特性共同强化了类型安全与意图原创 2026-07-01 00:12:28 · 192 阅读 · 0 评论 -
MAF教学系列 #4:用 RAG 把“幻觉”关进笼子,让 AI 学会“引经据典”
本文介绍了如何通过检索增强生成(RAG)技术解决AI大模型"幻觉"问题。RAG通过在回答前检索知识库,确保回答基于可靠资料。文章演示了两种实现方式:1)使用TextSearchProvider模拟文本搜索,当问题包含特定关键词时返回预设答案;2)集成向量数据库进行语义搜索,将文本转换为向量并计算相似度。通过MAF框架,开发者可以轻松实现RAG功能,只需定义搜索时机、封装搜索逻辑并注入AIAgent即可。这种方法能有效提升AI回答的准确性,适用于企业知识库等场景。原创 2026-04-29 09:00:00 · 484 阅读 · 0 评论 -
探索 Microsoft Agent Framework:(二)Tools与格式化输出
本文介绍了如何在Microsoft Agent Framework (MAF) 中使用Tools功能,让AI代理能够调用开发者定义的函数。通过示例展示了如何创建天气查询工具和人物信息生成工具,并强调了结构化输出的重要性。文章还讲解了如何让AI代理直接返回指定格式的对象(如Person记录),而不仅仅是自然语言描述。最后演示了将Tools功能与结构化输出结合使用的方法,使开发者能够更高效地构建功能丰富的AI代理。该技术可应用于天气查询、数据获取等多种场景,提高AI响应的准确性和可用性。原创 2026-03-27 16:58:51 · 440 阅读 · 0 评论 -
探索 Microsoft Agent Framework:构建你的第一个 AI Agent(入门篇)
Microsoft Agent Framework(简称 MAF)是微软推出的一款用于构建 AI 应用程序的强大工具。它支持 C# 和 Python两种语言使用,当然,尤其适合 .NET 技术栈的开发者,帮助我们快速集成大语言模型(LLM)并构建智能 Agent。本文将带你从零开始,逐步了解如何使用 MF 创建自己的第一个 Agent,并实现文字对话、图片理解、多轮交互以及会话持久化等功能。原创 2026-03-19 00:06:56 · 851 阅读 · 0 评论 -
C#中的并行计算库(PLINQ)实战与性能优化
通过上面的代码演示与性能测试,我们了解到:对于计算密集型任务,PLINQ能够显著提高性能,尤其是在数据量较大的情况下。对于I/O密集型任务,异步编程(async/await)更加合适,因为它能够有效地利用线程进行等待资源。使用PLINQ时,需要小心分区与线程开销,避免在小数据或I/O密集型任务中滥用并行计算,同时也需要避免过度并行化。学会了吗?原创 2026-02-12 11:00:00 · 593 阅读 · 0 评论 -
GitHub Copilot走出编辑器,成为你应用的一部分
GitHub Copilot sdk的发布,让copilot可以集成到任意应用原创 2026-02-02 19:00:00 · 803 阅读 · 0 评论 -
VSCode自定义Copilot Agent与Awesome Agent
本文介绍了在VSCode中创建自定义Copilot Agent的方法。通过Agent菜单可创建工作区或全局Agent模板,并使用ConfigureTools配置工具。文章推荐awesome-copilot项目提供丰富的Agent模板、提示词模板及技能模板等资源,方便开发者快速使用。更多内容可关注作者在微信公众号"@scixing的炼丹房"和B站"@无聊的年"的分享。原创 2026-01-18 20:17:09 · 3250 阅读 · 0 评论 -
.NET10疯狂的性能提升
.NET10带来了一系列令人振奋的性能优化,主要包括逃逸分析、委托优化和抽象性能提升。逃逸分析能智能判断对象生命周期,将短期对象分配到栈上而非堆,显著减少GC压力。委托优化使编译器能内联不会逃逸的委托,降低内存占用。此外,数组接口和Linq操作(如Contains)也获得重大改进,能更智能地理解开发者意图,避免不必要的中间操作。这些优化使.NET10在内存管理和执行效率上都有显著提升,为开发者带来更高效的运行体验。原创 2025-12-28 13:13:28 · 877 阅读 · 0 评论 -
函数式编程 第八讲 循环者,递归也
本文探讨了函数式编程中循环与递归的等价性及适用场景。通过分析循环和尾递归的结构相似性(初始状态、状态传递、终止条件),指出在业务逻辑中,尾递归可以更清晰地表达"直到成功"的意图。文章比较了命令式循环和函数式递归在动态规划算法和重试(retry)场景下的适用性:循环适合计算密集型任务,而递归更适合表达业务意图。最后提出可将重试逻辑抽象为高阶函数,强调函数式编程通过"将流程转化为值"来提升代码可读性和可组合性,同时指出在C#中使用尾递归需注意性能优化问题。原创 2025-11-27 23:34:53 · 730 阅读 · 0 评论 -
【C#探索】.NET10 C#14前瞻
【C#14新特性前瞻】文章摘要:.NETConf2025将发布.NET10正式版,C#14带来多项重要更新:1.全新扩展方法语法,支持方法、属性及运算符扩展,提升函数式编程体验;2.幕后变量(field)自动生成简化属性定义;3.Null条件分配支持安全赋值;4.改进的JSON序列化支持PipeReader;5.简单lambda参数支持out修饰符;6.用户自定义复合运算符和分部构造函数;7.字符串数字排序优化。这些改进使C#更简洁高效,同时增强函数式编程能力。原创 2025-11-15 09:46:59 · 679 阅读 · 0 评论 -
【F#入门】 第六讲 计算表达式(与异步模型简介)
本文介绍了F#中计算表达式的概念,用于简化代数数据类型的组合运算。通过定义OptionBuilder类型实现Bind和Return方法,可以优雅地处理Option类型的值组合问题,避免繁琐的模式匹配。计算表达式支持let!、return等语法,类似于C#的LINQ查询表达式。文章还展示了如何将这一模式应用于异步编程(Async/Task),通过async/task表达式简化异步操作组合。这种方法将高级值视为普通值处理,无需关注具体实现细节,体现了函数式编程的抽象能力。计算表达式大大提升了代码可读性和编写效率原创 2025-10-08 12:06:51 · 740 阅读 · 0 评论 -
【函数式编程】七- 数据结构
本文探讨了函数式编程与数据结构的结合,重点介绍了两种不可变数据结构的实现方式:链表和二叉树。通过递归定义和不可变性原则,文章展示了如何用F#和C#构建函数式链表(List<T>)和二叉树(Tree<T>)。这些结构遵循函数式编程的核心特性:不可变性(修改时创建新对象)和表达式特性(确定性输出)。文章指出函数式数据结构在多读少写场景下的优势,包括状态回溯能力和高级抽象处理能力,同时也提到其性能特点(如尾部操作效率问题)。最后鼓励读者自行实现树的Map和Insert函数以深入理解函数式数原创 2025-09-28 18:04:30 · 946 阅读 · 0 评论 -
Visual Studio 2026预览版发布!
VS2026预览版发布,带来多项重大更新:性能显著提升,启动和项目加载速度更快;采用Fluent UI重新设计界面,提供11种配色方案;编辑器新增文件编码修改功能,原生支持Mermaid语法;搜索功能优化,可排除指定文件夹;Copilot能力增强,支持意图识别、自适应粘贴和自定义模型;新增.NET性能测试模板,支持报表输出;Git工具支持内联拉取请求注释。推荐配置16核CPU+64GB内存,但优化后性能仍优于VS2022。原创 2025-09-17 09:36:31 · 7078 阅读 · 0 评论 -
【C#探索】C#中三种只读/不可变集合有什么用?
本文介绍了C#中三种只读/不可变集合的区别与应用:Readonly系列是对可变集合的简单封装,成本低适用于限制修改权限;Immutable系列采用函数式编程理念,通过创建新对象实现修改,适合多线程和版本追踪场景;Frozen系列是.NET8新增的真正不可变集合,优化读取性能但创建开销大,适用于只读常量表。文章通过历史演变、性能对比和典型场景分析,帮助开发者根据需求选择合适的集合类型。原创 2025-09-07 00:15:43 · 1034 阅读 · 0 评论 -
【函数式编程】(六.plus)LINQ查询表达式 如何让我们的代码变得更加优雅?
本文探讨了C#中LINQ查询表达式与扩展方法式写法的差异与应用场景。查询表达式借鉴SQL语法风格,提供强大的查询能力,但其在代码中可能显得突兀。通过LanguageExt库示例,展示了查询表达式如何优雅处理单子流(嵌套bind),相比传统嵌套写法更简洁。文章对比了应用式与单子流的区别:应用式适合并行计算和错误收集,而单子流支持参数依赖且具备快速失败特性。最后指出二者在函数式编程中各有优势,应根据场景选择合适方法。原创 2025-07-24 10:41:14 · 978 阅读 · 0 评论 -
【函数式编程】六- 多参函数与应用式
本文探讨了函数式编程中处理多参函数的解决方案。首先介绍了柯里化和偏函数应用,将多元函数转化为一元函数序列。然后讲解了正向/反向函数应用的差异及反向应用在代码可读性和可维护性上的优势。重点阐述了应用式(Applicative)的概念,它允许在高级抽象层级中处理多参函数,解决了嵌套Map/Bind带来的复杂性。通过Either示例展示了应用式如何简化抽象层级的组合操作,并指出应用式介于函子(Functor)和单子(Monad)之间的特性。文章为处理多参函数提供了实用的函数式编程技巧。原创 2025-07-05 14:10:02 · 1067 阅读 · 0 评论 -
Microsoft Build 2025重点速览
在Microsoft Build 2025上,微软CEO纳德拉宣布,WSL(Windows Subsystem Linux),和Copilot Chat将开源利好开源界.jpg。原创 2025-06-11 20:46:34 · 873 阅读 · 0 评论 -
【F#入门】第五讲 模式匹配
本期内容深入探讨了F#中的模式匹配,这是一种强大的工具,用于分解和判断数据。模式匹配通过定义一系列规则来转换输入数据,F#支持多种模式,包括常量模式、标识符模式、变量模式、OR/AND模式、Cons模式、列表模式、数组模式、记录模式、类型模式和活动模式等。这些模式不仅使业务规则更加清晰,还使得代码更接近问题域的表述,特别是在函数式编程中,模式匹配是递归算法的自然表达方式。通过具体的代码示例,如红黑树的实现,展示了模式匹配如何简化复杂数据结构的操作,使得代码更加简洁和易于理解。模式匹配不仅限于函数式编程,其高原创 2025-05-08 23:00:34 · 606 阅读 · 0 评论 -
【函数式编程】【C#/F#】第五讲 函数式编程中的错误处理,副作用管理
在上一讲中,我们学习了在函数式编程中一个,非常重要的概念。藉由这个武器,我们将来挑战我们最开始做讲述的概念,代码的副作用。当然,如果你还记得的话,程序的异常也是副作用的其中一种。复习时间:会影响外界状态(状态突变)、使用到了IO(输入输出)的功能、改变输入参数,或是抛出异常叫做副作用如果你觉得有部分知识点已经忘了,可以回顾一下之前的内容【C#/F#】「函数式编程」序章 - 不可变与表达式两大戒律单子在FP之中有一个重要的任务,那就是管控副作用的范围。这也是我们一直想要强调的,副作用在程序中不可避免。原创 2025-04-16 15:28:08 · 1178 阅读 · 0 评论 -
如何在各种限制(无网/无IDE)条件下编译我们的.NET程序(.NET Core ver.)
NET程序其实也有这么一个隐藏的环节,如果你依赖了nuget包,项目会在还原的时候自动从网络上下载这些包,并缓存在你的本地中。dotnet工具在背后做了非常的多的事,让我们编译看起来变得如此简单,不过我们也需要了解一些他的工作原理,让我们能更好的理解整个过程。VS本来就不是我们必须应该依赖的东西,我们完全可以通过VScode来调试我们的程序,相对VS来说,VSCode足够小巧,也可以不需要麻烦的步骤才能获得离线版,安装插件后,甚至也可以轻松的调试。这就是我们要做的事,这样,我们便可以编译的出我们的代码。原创 2025-04-06 15:35:03 · 1120 阅读 · 0 评论 -
模型上下文协议(MCP)简介,配合DeepSeek开发应用
简单介绍就是,资源就是能提供给llm的上下文,提示词就是llm的提示,工具是服务器提供的工具,采样是一个特殊的功能用于采样提示词,root则是表明应用的工作的范围。简单来说,对于用户来说,MCP是一种简单的工具,可以帮助我们访问各式各样的数据源。在EchoTools.cs文件中,修改代码如下,便实现了我们的加法工具,这和之前SK(语义核心)的工具编写方法非常的像,几乎可以无缝使用。然后你可以填入你的OPENAI的key,如果你想用DeepSeek的话,参考我们之前的内容,就可以轻松的切换到我们想用的模型。原创 2025-03-31 11:36:13 · 3547 阅读 · 0 评论 -
【F#入门】第四讲 函数,管道与组合
介绍函数 组合 管道 以及递归函数的概念原创 2025-03-23 20:47:57 · 914 阅读 · 0 评论 -
【函数式编程】【C#/F#】第四讲:单子与函子 - 抽象的编程模式
介绍了函子 单子的定义 以及使用例子,和抽象的编程模式原创 2025-03-17 23:11:41 · 1216 阅读 · 0 评论 -
【F#初学者】第三讲 可区分联合与其高级运用
F#中的可区分联合原创 2025-03-07 11:42:20 · 913 阅读 · 0 评论 -
【C#/F#】【函数式编程】第三讲:我们应该如何使用记录这个类型?- 数据与逻辑分离
介绍了如何利用记录的不可变性和其它特性,完成准确的数据建模。增强代码健壮性可读性原创 2025-02-23 10:29:09 · 922 阅读 · 0 评论 -
.NET9中的HttpClient的优化更新
.NET9中的HttpClient的优化更新原创 2025-02-14 11:59:28 · 534 阅读 · 0 评论 -
【F#初学者】第二讲 F#中的类型简介
F#中的类型系统 集合类型 可区分联合 常见类型 unit类型 面向对象类型等原创 2025-02-07 15:02:57 · 1084 阅读 · 0 评论 -
【C#/F#】「函数式编程」第二讲:函数签名,与“诚实”的函数
介绍了函数签名 与什么叫做诚实的函数原创 2025-02-01 23:13:53 · 953 阅读 · 0 评论 -
【C#/F#】「函数式编程」第一讲:高阶函数、纯函数
介绍 高阶函数 纯函数原创 2025-01-02 16:52:26 · 928 阅读 · 0 评论 -
Nullable Reference Types为什么会出现在C#之中?
Nullable Reference Types(NRT)出现的本质是为了消除null这个洪水猛兽原创 2024-12-04 22:44:49 · 1376 阅读 · 0 评论 -
.NET9中的HybridCache
.NET9中的HybridCache已经cache作用介绍原创 2024-11-20 23:40:25 · 1516 阅读 · 0 评论 -
.NET 9中的Json更新
如此便可以导出json的架构文档,如果修改JsonSerializerOptions的配置(注意最好使用new JsonSerializerOptions(JsonSerializerOptions.Default)的方式生成新的default复制后修改) ,也会得到相应的结果。这个就留给读者测试啦~其他还有例如无序元数据的读取,null限制,可选构造参数限制以及其性能优化等就不在本文详细解释了,感兴趣的同学可以在官方博客中看到其更新内容。在新版本中,我们不需要正则或者其他什么的,可以直接这么做。原创 2024-11-08 15:00:00 · 1297 阅读 · 0 评论 -
在WPF/WinForm中启用控制台窗口
在WPF/WinForm中开启控制台界面原创 2024-10-26 20:00:00 · 1126 阅读 · 0 评论 -
如何在WPF程序中启用ASP.NET Core的功能
在wpf程序中启用web功能,asp.net core功能原创 2024-10-21 20:00:00 · 1286 阅读 · 0 评论
分享