
C#
StevenChen85
行业沉淀。好好学习,好好工作,心平气和。10多年工作计算软件开发经验。曾在两个上市公司做为高级软件工程。还在一家公司做过研发部经理
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c# 获取指定路径盘的可用空间
本文介绍了如何在C#中使用DriveInfo类获取指定路径的磁盘空间信息。通过System.IO命名空间下的DriveInfo类,可以查询磁盘总空间和可用空间。示例代码演示了如何从路径获取驱动器信息,计算可用空间百分比,并处理可能的异常情况。需要注意的是,应用程序可能需要管理员权限才能正确获取磁盘信息。该方法适用于需要监控磁盘空间的应用场景。原创 2025-07-21 14:37:29 · 62 阅读 · 0 评论 -
Visual Stdudio 快捷键的使用
修改快捷键:工具 > 选项 > 环境 > 键盘,搜索命令并分配新快捷键(如对应格式化文档)。插件增强:安装扩展(如 ReSharper)可提供更强大的快捷键支持,但需注意与默认快捷键的冲突。提示快捷键可能因 VS 版本或键盘布局设置(如“常规”或“C#”)略有不同。组合键操作:如表示先按Ctrl+K松开,再按Ctrl+C。使用Ctrl + Q快速搜索 VS 功能(包括快捷键说明)。掌握这些快捷键可显著提升编码效率,建议逐步练习常用操作(如调试、重构),形成肌肉记忆!原创 2025-07-11 14:33:10 · 430 阅读 · 0 评论 -
vs折叠快捷键
。原创 2025-07-10 12:00:47 · 530 阅读 · 0 评论 -
c# 在sql server 数据库中批插入数据
摘要:本文介绍C#高效批量插入SQLServer数据的4种方法:1)SqlBulkCopy类(最高效,支持大批量);2)表值参数(适合万级数据);3)拼接SQL语句(需注意长度限制);4)事务批处理(保证原子性)。性能对比显示前两种方法最优,并提供优化建议:禁用索引/触发器、使用TABLOCK减少锁竞争、避免循环创建SqlCommand对象。每种方法均附代码示例,涵盖不同数据量和业务场景需求。原创 2025-06-29 17:57:57 · 128 阅读 · 0 评论 -
C# ExcelWorksheet 贴图
摘要:本文介绍了两种在C#中操作Excel插入图片的方法。使用ClosedXML时,需通过XLWorkbook创建工作表,使用AddPicture添加图片并设置位置大小;使用EPPlus则通过ExcelPackage添加工作表,调用AddPicture方法插入图片。两种方式都需要正确设置图片路径、位置参数和保存权限。开发者可根据项目需求选择ClosedXML或EPPlus库来实现Excel工作表贴图功能。原创 2025-06-05 14:54:31 · 390 阅读 · 0 评论 -
C# await与wait的区别
在 C# 中,await和Wait()await。原创 2025-06-01 11:03:33 · 816 阅读 · 0 评论 -
AutoMapper .net Framework 的 Model转换扩展方法
在.NET Framework项目中,使用AutoMapper可以显著减少实体间转换的代码量。首先,通过NuGet安装AutoMapper 8.1.1包。然后,创建映射关系类AutoMapperConfigs,并在其中初始化映射配置,如Mapper.Initialize(cfg => cfg.CreateMap<PointModel, PointViewDataModel>());。在程序启动时调用AutoMapperConfigs.Init()方法以启用映射。接着,创建一个扩展方法Map原创 2025-05-22 14:40:29 · 246 阅读 · 0 评论 -
C# 字符串扩展方法 更新20250522
本文介绍了一个封装在DLL文件中的字符串扩展方法库,提供了多种字符串处理功能。主要功能包括:判断字符串是否为空或空白、是否为数字、邮件、字母加数字、手机号码、电话号码、网址、IP地址等;字符串转换为int、ushort、float、double等类型;截取指定长度字符串;清除SQL注入危险字符;根据路径递归创建文件夹。该库具有代码简洁、无BUG、可复用性强等优点,适用于各种项目中的字符串处理需求。通过使用正则表达式和内置方法,实现了高效、准确的字符串操作。原创 2025-05-22 09:16:42 · 257 阅读 · 0 评论 -
在C#中对List<T>实现多属性排序
本文介绍了四种实现多级排序的方法:1. LINQ链式调用:使用OrderBy和ThenBy实现多级排序,直观易读,适合动态需求,返回新列表。2. 自定义比较器(IComparer):适用于复杂或高频排序,性能高,适合固定规则,原地排序。3. 动态排序(反射+LINQ):根据属性名动态排序,需处理反射性能开销和空值。4. 性能对比:LINQ适合简单排序,自定义比较器适合高频复杂排序,动态排序性能较低。示例类Person包含Name、Age和Score属性。原创 2025-05-21 12:29:56 · 606 阅读 · 0 评论 -
C# string 转枚举
在C#中,将字符串转换为枚举类型可以通过Enum.Parse和Enum.TryParse方法实现。Enum.Parse直接解析字符串,但若字符串无效会抛出异常,需配合try-catch处理。Enum.TryParse则更安全,通过返回值判断是否成功,且支持忽略大小写。为简化调用,可以封装泛型扩展方法,如ToEnum,支持默认值处理。转换时需注意大小写敏感性和值检查,建议使用Enum.IsDefined验证字符串是否为有效枚举值。性能上,TryParse优于Parse加异常捕获。完整示例展示了安全转换及默认值原创 2025-05-21 10:10:14 · 644 阅读 · 0 评论 -
c#递规获取指定目录下的所有文件
c#递归获取指定目录下的所有文件在C#中,递归地获取指定目录下的所有文件可以通过使用System.IO命名空间下的和FileInfo类来实现。以下是一个示例代码,展示了如何递归地遍历一个目录及其所有子目录,并列出所有文件的路径。原创 2025-04-03 10:43:49 · 439 阅读 · 0 评论 -
c# PDF文件合并工具
主要用于发票PDF文件的合并。经常出差要报销的很有用。原创 2025-01-20 09:12:26 · 469 阅读 · 0 评论 -
C# HttpHelper 帮助类带Token
【代码】C# HttpHelper 帮助类带Token。原创 2024-12-17 20:18:01 · 290 阅读 · 0 评论 -
C# 5000 转16进制 字节(激光器串口通讯生成指定格式命令)
最近在做一个与激光器用串口进行通讯的程序文档中要求将频率参数以3个字节的方式进行发送。以便以后再有类似问题时可以快速解决。这段代码首先将整数5000转换为8位十六进制字符串(前面填充0以确保总是4个字节),然后将每两个十六进制字符转换为字节,并最终以字节数组的形式输出。方法将整数转换为指定基数的字符串。对于转换为十六进制字节表示,需要首先确定整数的字节表示形式,通常是4个字节。方法将整数转换为其十六进制表示的字符串,并使用。用于将输出中的连字符换成空格。用于以可读格式输出字节数组,原创 2024-11-18 21:58:25 · 406 阅读 · 0 评论 -
vs svn Files 的值“ < < < < < < < .mine”无效。路径中具有非法字符。
解决冲突,告诉SVN这个问题已解决(Resolved)。一般更简单些:在你的工程OBJ/DEBUG目录下,找到 工程名.csproj.FileListAbsolute.txt的文件打开并删除含有'<<<<<<< .mine'或类似的字段,重新编译即可。第一次尝试解决,没有成功,于是就直接把Debug下的文件给删除了,然后问题解决了哈。错误 1 Files 的值“ < < < < < < < .mine”无效。路径中具有非法字符。转载 2024-10-31 09:17:38 · 292 阅读 · 0 评论 -
C# ftp帮助类 项目实战优化版
功能列表:连接服务器,下载文件,上传文件,删除服务器文件,获取当前目录下明细(包含文件和文件夹) ,获取FTP文件列表(包括文件夹),获取当前目录下文件列表(不包括文件夹) ,创建文件夹,获取指定文件大小 ,更改文件名,移动文件 ,删除ftpURI目录下指定的文件夹。现在把项目实战代码进行分享一下。//ftpUploadFileName FTP服务器完整上传路径包括文件名。//currentDirectory 本地文件完整路径包括文件名。//fileName 文件名,只是文件名。原创 2024-10-30 10:55:46 · 583 阅读 · 0 评论 -
C# 两个List 比较(交集、差集、并集)
在开发中对比两个集合的操作也是常有的。原创 2024-10-24 11:25:22 · 909 阅读 · 0 评论 -
c#获取目录下所有文件
该方法使用了延迟查询,返回一个实现了IEnumerable接口的文件路径集合,适用于处理大量文件时的性能优化。该方法可以获取指定目录及其子目录中的所有文件,返回一个字符串数组,包含了所有文件的完整路径。c#获取目录下所有文件。原创 2024-10-24 09:46:08 · 1124 阅读 · 0 评论 -
C# list集合引用类型赋值后清除数据源数据时值后也一并清除问题处理
/ToList()方法会返回一个数据相同内存地址不同的一个新对象。这时再去清除A就没有问题了。这个问题很简单,就是在赋值时是引用传递不是值传递,说白了就是用=号赋值时给左边变量的值不是真正的数据,而是原变量的引用地址或说是内存地址。A.Clear();C# list集合引用类型赋值后清除数据源数据时值后也一并清除问题处理。如上图的关系,把A清除了。原创 2024-10-23 10:35:23 · 439 阅读 · 0 评论 -
C# List.Sort() 自定义排序实战用法
这种方法不要在数据实体中实现IComparable 接口的方法,直接在调用时自定义排序规则就可以。实体实现IComparable 接口的CompareTo方法。原创 2024-10-20 13:03:53 · 159 阅读 · 0 评论 -
上位机开发常用技术 C# Task 线程 开始,暂停,继续,停止
上位机开发中一定会用到的技术就是 设备的线程开始运行执行生产流程,在生产过程中会有要打开安全门或暂停设备动作,人为去排除设备小问题的时就要用到暂停功能,问题排除后设备继续运行,生产完成后设备停止。 这些操作是上位机开发中必须要实现的功能。下面是一个简单的示例。原创 2024-10-20 12:47:58 · 954 阅读 · 0 评论 -
C# windows 让消息框显示在最前面
让消息框显示在最前面。原创 2024-10-01 12:14:52 · 905 阅读 · 0 评论 -
C# Windows EventHandler事件的使用
在实现项目中有这样一个使用场景,在一个独立的类库中,它没有对其他类库的引用。所以它能调用的资源有限。这时想在这个类库的一个窗体中的一个按钮要实现一个功能时就会发现有很多要调用的资源没有,无法实现业务逻辑。这时怎么办?原创 2024-09-28 11:35:09 · 637 阅读 · 0 评论 -
c# Csv文件读写示例,如果文件存在追加写入
注意示例中的ToDataTable()方法是自己的封装的扩展方法,源码在。原创 2024-09-05 22:54:53 · 1343 阅读 · 0 评论 -
c# 什么是扩展方法
扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种静态方法,但可以像扩展类型上的实例方法一样进行调用。 对于用 C#、F# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中定义的方法没有明显区别。原创 2024-08-09 20:42:21 · 486 阅读 · 0 评论 -
C# 字符串扩展方法
功能 1.判断一个字符串是否为null或者空字符串 2.判断一个字符串是否为null或者空白字符 3.判断一个字符串是否为数字 4.判断一个字符串是否为邮件 5.判断一个字符串是否为字母加数字 6.判断一个字符串是否为手机号码 7.判断一个字符串是否为电话号码 8.判断一个字符串是否为网址 9.判断一个字符串是否为IP地址原创 2024-08-08 19:47:28 · 739 阅读 · 0 评论 -
C# 枚举 扩展方法
C# 枚举 扩展方法功能 1.获取枚举描述 2.将指定枚举类型转换成List3.将枚举类型转换成ListModel 4.绑定枚举原创 2024-08-08 16:48:06 · 766 阅读 · 0 评论 -
c#怎么折叠代码快捷
这些快捷键可以帮助你快速折叠或展开代码,从而更好地组织和查看你的代码结构。请注意,这些快捷键可能会因为不同的开发环境或设置有所不同,因此建议根据你的开发环境进行相应的调整或确认。在C#中,你可以使用快捷键来折叠或展开代码,以便更好地管理和浏览代码。以下是一些常用的快捷键:。原创 2024-08-07 09:50:52 · 1014 阅读 · 0 评论 -
C# UDP网络通信的实例
UDP协议是互联网上使用最广泛的传输协议之一,具有简单、高效和不可靠的特点,本文主要介绍了C# UDP网络通信的实现示例。原创 2024-08-03 10:14:34 · 61 阅读 · 0 评论 -
C# FTP常用操作
【代码】C# FTP常用操作。原创 2024-04-19 17:56:15 · 228 阅读 · 0 评论 -
网页端HTML使用MQTTJs订阅RabbitMQ数据
MQTT有一个叫browserMqtt.js看名字就知道是为浏览器提供的JS库。4、由于MQTT的JS库没有提供Topic交换机与路由绑定功能。C#连接RabbitMQ示例代码也是一堆堆的也没什么好说的。1、MQTT的路由是以 / 来分割的。在RabbitMQ中会被转义成 . 如示例中的路由Dcon/Logs/Client会被转换成 Dcon.Logs.Client。后端都是使用RabbitMQ的AMQP协议,而前端要求在网页HTML上显示数据。我们选择了使用MQTT协议从RabbitMQ中订阅数据。原创 2024-04-10 09:25:23 · 1084 阅读 · 0 评论 -
net core SSO 单点登录和控制器中获取Token和UserId
net core SSO 单点登录和控制器中获取Token和UserId在写WebApi时常常是要获取登录用户的oken和UserId的,本文就这个需求来分享一下我在实际项目中的处理代码。原创 2024-03-29 09:12:34 · 931 阅读 · 0 评论 -
C# The process cannot access the file ‘XXX_.pdf‘ because it is being used by another process.生成完PDF文
问题出现情况:在新创建一个pdf文件后,前台下载文件时,出现了The process cannot access the file because it is being used by another process 这个问题。原因分析:在生成文件后,已经或关闭相关的文件流操作,但是在使用System.IO.File.OpenRead(fullPath)读取文件时,就出现了上述问题。生成完PDF文件后,再System.IO.File.OpenRead(cdipath)打开报错。原创 2024-03-29 09:05:03 · 1370 阅读 · 0 评论 -
net core API 后台系统操作日志的实现思路
我的思路是使用反射,写个通用的比较方法将修改前对象和修改后对象转入,使用反射去比较两个对像的值是否修改,如果修改了将字段的描述名称取出来生成日志。生成的操作日志是:XX人在XX时间修改了用户的【姓名】修改前:xxx,修改后:xxx,【性别】修改前:XXXX,修改后。如果要监控的每个表都去写代码去监控和转换这样的工作量就会比较大。从resultList 集合中可以获取比对结果,下面怎么 处理就看实际需求了。系统操作日志的实现思路主要问题不在于写日志和表结构设计上。主要问题在识别出哪些数据做了修改。原创 2024-03-24 19:57:40 · 555 阅读 · 0 评论 -
net core 使用 Npoi 生成 Word文档
需求:按数据层级生成WORD文件,要有目录,目录里要有真实的页码,附件内容用表格显示,大标题做为封面当独显示一页,PDF内容大标题,目录(里有对应的页码)正文里有 表格重点:NPOI在生成word文件时不会自动生成总页数,所以本人使用了一个固定行索引来计算页码的功能。使用 12号字体,一页是44行,按这个方法计算页码。有更好的方法可以在评论区告诉我。原创 2024-03-14 11:14:40 · 1132 阅读 · 0 评论 -
C# 中多线程锁的使用经验
【对象锁】从名称中就可以知道,这锁的范围在对象中,不会影响到其他对象的的调用。原因就是对象里使用对【全局锁】每个对象在调用MoveAbs方法时都会进行排对,第一个线程用完后,第二个线程去用。如果在一个类里定义了这样一个锁,你在调用使用这个类的时候,是NEW了一个对象,并把这个对象给了一个静态全局变量中保存。但在用线程Task调用MoveAbs方法时你会发现,三个轴的运动情况是一个一个的移动。你在调用带锁的方法时会受到【全局锁】的影响。上面的代码中有一个【全局锁】和一个用了【全局锁】的方法。原创 2024-03-13 23:47:50 · 949 阅读 · 0 评论 -
Net Core 使用Mongodb操作文件(上传,下载)
DLL文件:链接:https://pan.baidu.com/s/1SpWDtaXjavalJQav89UE4A?GridFS 介绍 https://baike.baidu.com/item/GridFS/6342715?这里创建的接口是空的,没有要扩展的方法,常用的接口都在 IMongoFileRepository 基类接口中定义了.这里创建的实现类也是空的,没有要扩展的方法,常用的接口都在 MongoFileRepository基类中实现了.使用很简单,在要引用的类库中直接引用DLL文件就可以。原创 2024-03-13 10:25:18 · 599 阅读 · 0 评论 -
C# ConcurrentQueue对列的基本使用方式
队列(Queue)代表了一个的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为,当您从列表中移除一项时,称为。ConcurrentQueue队列是一个高效的线程安全的队列,是.Net Framework 4.0,System.Collections.Concurrent命名空间下的一个数据结构。原创 2024-03-03 13:41:25 · 2085 阅读 · 0 评论