C#
文章平均质量分 56
C#
自己的九又四分之三站台
好好学习,天天向上
展开
-
AsposeWord和DocxWord开源读写Word文档
在以往的博客中我们介绍过两次Word文档的读写:https://blog.csdn.net/a13407142317/category_9736046.html?spm=1001.2014.3001.5482本次我将介绍一下在Word中增加表格,并对表格进行合并单元格的操作的记录1. Docx操作Word文档,增加表并合并单元格using System;using System.Collections.Generic;using System.Diagnostics;using System.L原创 2022-05-01 19:00:00 · 1385 阅读 · 0 评论 -
C#开源组件之Word文件的操作:一
经常使用C#开发,总会接触到对Word文档的编辑操作,排除开.Net自带的Office操作组件不说,之所以不说是由于其运行时需要Word环境,且其资料相较比较完善,需要了解的看客可以自行去百度或阅读MSDN。本文介绍的时C#中两种操作Word文档的开源组件1.Docx,其官网网站为:http://docx.codeplex.com/git访问地址为:https://github.com/xce...原创 2020-02-20 22:45:29 · 10432 阅读 · 2 评论 -
Prism框架整理---->第一篇:基本使用
Prism框架是WPF对MVVM的实现,当前博客使用版本是Prism8.0版本。1. 关于Prism主要关于Prism框架的知识信息可以关注笔者的博客《简介WPF的Prism框架》https://qlygmwcx.blog.csdn.net/article/details/121325035这里着重介绍以下几点:Prism.Core:实现MVVM的核心功能,属于一个与平台无关的项目;Prism.Wpf:包含了DialogService、Region、Module、Navigation,其他的一些原创 2022-03-01 21:15:00 · 5600 阅读 · 6 评论 -
Prism框架整理---->第四篇:命令行绑定
本篇博客采用直接转载的方式,因为发现有博客写的非常的详细,地址如下:https://www.cnblogs.com/ryzen/p/12143825.html转载 2022-03-07 22:06:12 · 396 阅读 · 0 评论 -
Prism框架整理---->第六篇:Prism系列之事件聚合器
本篇博客采用直接转载的方式,因为发现有博客写的非常的详细,地址如下:.NET Core 3 WPF MVVM框架 Prism系列之事件聚合器 https://www.cnblogs.com/ryzen/p/12196619.html转载 2022-03-07 22:10:52 · 307 阅读 · 0 评论 -
Prism框架整理---->第七篇:Prism系列之区域管理器
本篇博客采用直接转载的方式,因为发现有博客写的非常的详细,地址如下:.NET Core 3 WPF MVVM框架 Prism系列之区域管理器 https://www.cnblogs.com/ryzen/p/12605347.html转载 2022-03-07 22:11:50 · 320 阅读 · 0 评论 -
Prism框架整理---->第二篇:自定义关联方式
书接上文《Prism框架整理---->第一篇:基本使用》https://blog.csdn.net/a13407142317/article/details/123193576?spm=1001.2014.3001.5501 在这个里面我们介绍了如何使用Prism框架,下面我们介绍其中框架不适用默认名匹配自定义ViewModel文件后缀,自动匹配using Prism.Ioc;using Prism.Mvvm;using Prism.Unity;using PrismDemo.Views;usi原创 2022-03-02 21:59:20 · 779 阅读 · 0 评论 -
Prism框架整理---->第九篇:Prism系列之对话框服务
本篇博客采用直接转载的方式,因为发现有博客写的非常的详细,地址如下:NET Core 3 WPF MVVM框架 Prism系列之对话框服务 https://www.cnblogs.com/ryzen/p/12771986.html转载 2022-03-07 22:14:09 · 427 阅读 · 0 评论 -
Prism框架整理---->第八篇:Prism系列之导航系统
本篇博客采用直接转载的方式,因为发现有博客写的非常的详细,地址如下:.NET Core 3 WPF MVVM框架 Prism系列之导航系统 https://www.cnblogs.com/ryzen/p/12703914.html转载 2022-03-07 22:12:48 · 435 阅读 · 0 评论 -
Prism框架整理---->第五篇:Prism系列之模块化
本篇博客采用直接转载的方式,因为发现有博客写的非常的详细,地址如下:NET Core 3 WPF MVVM框架 Prism系列之模块化 https://www.cnblogs.com/ryzen/p/12185054.html转载 2022-03-07 22:09:41 · 562 阅读 · 0 评论 -
Prism框架整理---->第三篇:属性绑定与属性验证
本节我们来整理一下属性绑定的通知以及错误验证,我们通过 <TextBox Text="{Binding TextBlockInfo,UpdateSourceTrigger=PropertyChanged}"/>来通知后台属性,界面发生了改变,通过this.SetProperty(ref m_TextBlockInfo, value, "TextBlockInfo");来通知界面,后台属性发生了改变<Window x:Class="PrismDemo.XCViews.XC原创 2022-03-03 21:00:00 · 1692 阅读 · 0 评论 -
简介WPF的Prism框架
1. 什么是Prism Prism是一个用于在 WPF、Xamarin Form、Uno 平台和 WinUI 中构建松散耦合、可维护和可测试的 XAML 应用程序框架。 Prism是一个用于在WPF、Xamarin Forms、Uno Platform和WinUI中构建松耦合、可维护和可测试的XAML应用程序的框架。原创 2021-11-14 22:24:03 · 7843 阅读 · 0 评论 -
CSharp中Blazor初体验
Blazor 是一个由微软开发的开源 Web 框架,用于构建富客户端 Web 应用程序使用 C# 语言和 .NET 平台。Blazor 允许开发人员使用 C# 语言来编写前端 Web 应用程序,而不需要像传统的 JavaScript 框架(如 Angular、React 或 Vue.js)那样使用 JavaScript 或其他语言。在 Blazor Server 模式下,应用程序的 UI 逻辑在服务器上运行,而 UI 的渲染结果通过 SignalR 实时通信协议发送到客户端。原创 2023-12-19 21:48:58 · 1266 阅读 · 0 评论 -
CSharp中构造函数、析构函数和IDisposable使用细节探究
CSharp中构造函数、析构函数和IDisposable使用细节探究,关于析构函数的触发机制以及IDisposable的使用原创 2023-08-01 22:00:00 · 909 阅读 · 8 评论 -
COM技术简单介绍
COM (Component Object Model) 是一种面向对象的编程技术,它在 Windows 操作系统中广泛使用。COM 提供了一种标准的方法来创建和使用可重用的软件组件,这些组件可以通过不同的编程语言和应用程序进行访问和使用。COM 技术的主要特点包括:组件化:COM 技术将软件应用程序划分为多个组件,每个组件实现特定的功能,这些组件可以被多个应用程序复用。二进制兼容性:COM 组件是二进制兼容的,这意味着一个组件可以被多个应用程序复用,而不需要重新编译或修改源代码。原创 2023-03-09 20:51:33 · 4899 阅读 · 0 评论 -
宇宙第一IDE:使用VS显示代码结构图
Visual Studio 2022 代码图工具原创 2022-06-18 23:00:00 · 6775 阅读 · 9 评论 -
DotNet框架自带文字转语音接口
dot框架文字生成语音原创 2022-06-17 23:00:00 · 269 阅读 · 0 评论 -
C# Redis操作类
/// <summary> /// Redis操作方法基础类 /// </summary> public class RedisHelper { /// <summary> /// Redis操作对象 /// </summary> protected readonly IDatabase redis = null; /// <summary> /// 初始化Redis操作方法基础类 /// </..原创 2022-05-20 23:00:00 · 879 阅读 · 0 评论 -
CSharp中CLR的托管堆和垃圾回收(使用包装了本机资源的类型)
我们以System.IO.FileStream类为实例,可利用它打开一个文件,从文件中读取字节,像文件写入字节,然后关闭文件。FileStream对象在构造时会调用Win32 CreateFile函数,函数返回的句柄保存到SafeFileHandle对象中,然后通过FileStream对象的一个私有字段来维护对该对象的引用。FileStream类还提供了几个额外的属性(例如Length,Position,CanRead)和方法(Read,Write,Flush)。using System;using S原创 2022-04-29 23:00:00 · 318 阅读 · 0 评论 -
CSharp中CLR的托管堆和垃圾回收(使用需要特殊清理的类型)
现在基本上了解了垃圾回收和托管堆的情况,包括垃圾回收器如何回收对象的内存。信号大多数类型有内存就能正常工作。但有的类型除了内存还需要本机资源。例如,System.IO.FileStream类型需要打开一个文件(本机资源)并保存文件的句柄。然后,类型的Read和Write方法用句柄操作文件。类似的,System.Threading.Mutex类型要打开一个Windows互斥提体内核对象(本机资源)并保存其句柄,并调用Mutex的方法时使用该句柄。包含本机资源的类型被GC时,GC会回收对象在托管堆中使用的内原创 2022-04-28 23:00:00 · 451 阅读 · 0 评论 -
CSharp中CLR的托管堆和垃圾回收(监视应用程序的内存使用)
可在进程中调用几个方法来监视垃圾回收器。具体地说,GC类提供了以下静态方法,可调用它们查看某一带发生了多少次垃圾回收,或者托管堆中的对象当前使用了多少内存。Int32 CollectionCount(Int32 generation);Int64 GeoTotalMemory(Boolean forceFullCollection);为了评估特定代码块的性能,这些可以很好的把握代码块对进程工作集的影响,并了解执行代码块时发生了多少次垃圾回收。数字太大,就知道应该花更多的时间调整代码块中的算法。还可原创 2022-04-27 22:17:29 · 274 阅读 · 0 评论 -
宇宙第一IDE是谁?是微软+JetBrains :DotTrace和DotMemory
C#开发过程中我们在分析软件中可以使用一些软件分析代码中存在的问题,本文我们分享两个软件DotMemoryDotTrace1. DotMemory和DotTracedotTrace 是一个包含了可用于.NET应用程序的性能分析器(dotTrace Performance) 和内存分析器(dotTrace Memory)的套件。dotTrace Performance可帮助用户对各种.NET框架内的应用程序的性能瓶颈进行检测,能够帮助.Net开发者以最快的方式找到并移除性能上的瓶颈。dotTr原创 2022-04-24 23:00:00 · 2438 阅读 · 0 评论 -
CSharp中的开源读写Excel组件介绍
1. 读写Excel的开源组件NPOINPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作。NPOI是一个开源的C#读写Excel、WORD等微软OLE2组件文档的项目。Aspose.Cells for .NETAspose.Cells for .NET 是一个编程类库,允许软件开发人员在他们自己的应用程序中操作和处理电子表格文件。结合 API 和 GUI 控件,Aspose.Cells for .NET 加原创 2022-04-13 09:17:18 · 1396 阅读 · 0 评论 -
C#开源Excel组件使用说明
前文我们说了CSharp中四种开源操作Excel的组件,其中包括NPOI、Aspose.Cells for .NET、EPPlus、MiniExcel。本文来详细的讲解一下四种开源组件操作Excel的代码和效率比对1. Demo代码框架和数据说明1.1. Demo代码框架1.1.1. Demo代码思路:主题思路为以下几条内容:从表中读取数据并将数据写入到Excel中使用不同的数据体量写入到Excel中同时也测试将数据按每一个单页最大为50000行数据,测试大数据量数据原创 2022-04-11 22:44:52 · 6130 阅读 · 9 评论 -
CSharp中CLR的托管堆和垃圾回收(强制垃圾回收)
System.GC类型允许应用程序对垃圾回收器进行一些直接控制。例如,可读取GC.MaxGeeneration属性来查询托管堆支持的最大代数;该属性总是返回2还可以调用GC类的Collect方法强制垃圾回收。可向方法传递一个代表回收几代的整数、一个GCCollectionMode以及指定阻塞(非并发)或后台(并发)的一个Boolean值。以下是最复杂的Collect重载的签名:void Collect(Int32 generation,GCCollectionMode mode,Boolean bloc原创 2022-04-07 21:57:01 · 469 阅读 · 0 评论 -
CSharp中CLR的托管堆和垃圾回收(垃圾回收模式)
CLR启动会选择一个GC模式,进程终止前该模式不会改变。有两个基本GC模式。工作站该模式对客户端应用程序优化GC。GC造成的延时很低,应用程序线程挂起时间很短,避免使用户感到焦虑。在该模式中,GC假定机器上运行的其他应用程序都不会消耗太多的CPU资源。服务器该模式正对服务器端应用程序优化GC。被优化的主要是吞吐量和资源利用。GC假定机器上没有运行其他应用程序(无论客户端还是服务器应用程序),并假定机器的所有CPU都可用来辅助完成GC。该模式造成托管堆被拆分成几个区域(section),每个C原创 2022-04-05 20:38:22 · 588 阅读 · 0 评论 -
CSharp中CLR的托管堆和垃圾回收(大对象)
CLR将对象分为大对象和小对象。目前认为85000字节或更大的对象时大对象。CLR以不同方式对待大小对象。大对象不是在小对象的地址空间分配,而是在进程地址空间的其他地方分配。目前版本的GC不压缩大对象,因为在内存中移动他们代价太高。但这可能在进程中的大对象之间造成地址空间的碎片化,以至于抛出OutOfMemoryException。CLR将来的版本可能压缩大对象。大对象总是第2代,绝不可能时第0代或第1代。所以只能位需要长时间存活的资源创建打对象。分配短时间存活的大对象会导致第2代北更频繁的回收,会原创 2022-03-31 23:45:00 · 223 阅读 · 0 评论 -
CSharp中CLR的托管堆和垃圾回收(代:提升性能:垃圾回收触发条件)
前面说过,CLR在检测第0代超过预算时触发一次GC。这是GC最常见的触发条件,下面列出其他条件代码显式调用System.GC的静态Collect方法代码可以显式请求CLR执行回收。虽然Microsoft强烈反对这种请求,但有时情势比人强。Windows报告低内存情况CLR内部使用Win32函数CreateMemoryResourceNotification和QueryMemoryResourceNotification监视系统的总体内存使用情况。如果Windows报告内存低,CLR将强制垃圾原创 2022-03-31 23:30:00 · 390 阅读 · 0 评论 -
CSharp中CLR的托管堆和垃圾回收(代:提升性能)
CLR的GC是基于代的垃圾回收器(generational garbage collector),它对你的代码做出了以下几点假设:对象越新,生存期越短。对象越老,生存期越长。回收堆的一部分,速度快于回收整个堆。大量研究证明,这些假设对于现今大多数应用程序都是成立的,它们影响了垃圾回收器的实现方式。本节将解释代的工作原理。托管堆在初始化时不包含对象。添加到堆的对象称为第0代对象。简单地说,第0代对象就是哪些新构造的对象,垃圾回收器从未检查过他们。下图展示了一个新启动的应用程序,它分配了5个对象(原创 2022-03-24 23:00:07 · 455 阅读 · 0 评论 -
CSharp中CLR的托管堆和垃圾回收(垃圾回收和调试)
C# CLR垃圾回收第三篇原创 2022-03-14 22:52:45 · 513 阅读 · 0 评论 -
CLR的托管堆和垃圾回收:垃圾回收算法
C# CLR中的垃圾回收算法,真的是一字千金...原创 2022-03-09 23:17:49 · 436 阅读 · 1 评论 -
CLR的托管堆和垃圾回收:托管堆基础
1. 托管堆基础每个程序都要使用这样或那样的资源,包括文件、内存缓冲区、屏幕空间、网络连接、数据库资源等。而事实上,在面向对象的环境中,每个类型都代表可供程序使用的一种资源。要使用这些资源,必须为代表资源的类型分配内存,一下为访问一个资源所需的步骤:调用IL指令newobj,为代表资源的类型分配内存(一般使用C# new 操作符来完成)。初始化内存,设置资源的初始状态并使资源可用。类型的实例构造器负责设置初始状态。访问类型的成员来使用资源(有必要可以重复)。摧毁资源的状态以进行清理。释放内存。原创 2022-03-08 22:11:55 · 432 阅读 · 14 评论 -
CSharp中集合与字典Contains效率差别
书接上文《CSharp中的集合与字典:不同数据量的内存占用情况》 https://blog.csdn.net/a13407142317/article/details/123078962?spm=1001.2014.3001.5501 总结了不同数据量的内存占用情况,本文我们来总结一下在集合与字典中,通过Contains判断是否包含,其效率如何:示例我们创建集合,将集合中随机填充数字或字符(数字或字符会出现重复),然后将其统一的插入到泛型集合和字典中,保证其是唯一的。代码如下:private voi原创 2022-02-24 21:44:58 · 708 阅读 · 0 评论 -
CSharp中泛型集合List<T>的Contains函数
泛型集合List的源代码如下:使用方法if(!List.Contains(obj)){ List.Add(bj);}public class Person{ private string Age; private string Name; public Person(string name, int age) { this.Name = name; this.Age= age; } public bool Equals(P原创 2022-02-23 23:45:55 · 693 阅读 · 0 评论 -
CSharp中的集合与字典:不同数据量的内存占用情况
1. CSharp中的集合 集合(Collection)类是专门用于数据存储和检索的类。这些类提供了对栈(stack)、队列(queue)、列表(list)和哈希表(hash table)的支持。大多数集合类实现了相同的接口。 集合(Collection)类服务于不同的目的,如为元素动态分配内存,基于索引访问列表项等等原创 2022-02-22 22:27:03 · 8681 阅读 · 0 评论 -
字符串拼接:语言C#(CSharp)
今天我们来介绍一下C#语言的字符串花式拼接方式1. 基本使用废话少说,我们直接上代码,介绍一下字符串的拼接的方式using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace CSharpPrimeNumber{ public class StringSplicingDemo {原创 2021-11-03 20:00:00 · 1197 阅读 · 1 评论 -
CSDN家政部,保姆式教学C#的EFCore,一步一步带你入门
先来一张祖师爷镇楼。哎呀呀! 搞错了搞错了,当然应该是这个头发多的…在之前的时候博主介绍过关于C#中的ORM框架,博主本人也使用过Java的ORM框架MyBatis,但是我还是觉得C#的ORM框架丝滑。回到正题,我们来开始我们本次的内容1. 搭建一个演示Demo创建三个类库Demo.MainForm(Window窗体)、Demo.Domain(类库)、Demo.Data(类库)1.1. 在Demo.Domain中我们创建三个类using System;using System.Colle原创 2021-07-05 09:20:51 · 850 阅读 · 25 评论 -
EF和EFCore
1. 框架介绍Entity Framework 6Entity Framework 6 (EF6) 是一种久经验证的数据访问技术。 2008 年,它作为 .NET Framework 3.5 SP1 和 Visual Studio 2008 SP1 的一部分首次发布。 从 4.1 版开始,已作为 EntityFramework NuGet 包发布。 EF6 在 .NET Framework 4.x 上运行,这意味着它仅在 Windows 上运行。EF6 产品仍受支持,并将继续提供 bug 修复和细原创 2021-07-03 21:16:24 · 239 阅读 · 3 评论 -
C#中的Lazy、ThreadStatic、ThreadLocal关键字
1.Lazy关键字在.NET4.0中,可以使用Lazy 来实现对象的延迟初始化,从而优化系统的性能。延迟初始化主要用于提高性能、避免浪费计算和减少程序内存需求。这些是最常见的场景:1.1. Lazy调用案例private void btnLazyDemo001_Click(object sender, EventArgs e){ DemoInfo pDemoInfo = new DemoInfo(); Console.WriteLine($"年龄:{pDemoInfo.Age} {原创 2021-06-28 11:11:37 · 773 阅读 · 18 评论 -
C#中的异步AsyncAwait
本文再回到C#编程中的多线程开发,我们来讲以下Async和Await两个关键字的异步开发的内容。private async void button1_Click(object sender, EventArgs e){ Task<int> task = Method1(); Console.WriteLine(string.Format("Async等待完成" + await task)); Console.WriteLine(string.Format("Async原创 2021-06-08 09:17:58 · 631 阅读 · 14 评论