.net(C#)
文章平均质量分 66
简单的绿竹
学无止境,活到老学到老。脚踏实地,一步一个脚印。坚持,用心,努力,加油!
展开
-
【C#日常】C#集合Dictionary获取第一个键值
PS:拓展方法,我已经讲过很多次了,可以翻看这篇文章:https://blog.csdn.net/q764424567/article/details/109263902。PS:Linq是使用拓展方法,遍历了集合的查询过程,使用简单方便,非常的有用。首先,分析一下这个需求,如果是输入或者List返回第一个值是很容易的,直接数组[0] 或者List[0],就可以返回第一个值,但是这个在字典中是不适用的。使用拓展方法,模仿LInq查询,返回第一个键值。使用了Linq查询函数,返回第一个键值。原创 2024-06-25 11:23:33 · 1358 阅读 · 0 评论 -
C# 正则表达式
Regex reg = new Regex(@"^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$");Regex reg = new Regex(@"[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?原创 2024-05-11 11:17:41 · 340 阅读 · 0 评论 -
C#解析JSON
全称“JavaScript Object Notation(JavaScript对象表示法)”,JSON 是存储和交换文本信息的语法。"id": 2,"name": "星河爆破",},"id": 3,"name": "九星连珠",},"id": 4,"name": "一语成谶",学习JSON基础教程在线JSON解析在线JSON解析及格式化验证网站。原创 2024-02-29 16:40:44 · 2304 阅读 · 0 评论 -
c#使用log4net的3种调用方法
param name="ConversionPattern" value="日志时间:%d %n日志级别:%-5p %n日志内容:%m%n%n" /><param name="ConversionPattern" value="日志时间:%d %n日志级别:%-5p %n日志内容:%m%n%n" /><param name="ConversionPattern" value="日志时间:%d %n日志级别:%-5p %n日志内容:%m%n%n" />--< > = <> %n = 回车-->原创 2024-02-28 14:18:41 · 2122 阅读 · 0 评论 -
AppDomain 详解
而这个功能在某 些程序设计时是非常必要的,考虑你正在用反射机制写一个查看DLL中所有函数详细信息的程序,程序提供一个菜单让用户可以选择DLL文件,这时就需要让程 序能够卸载DLL,否则一旦用户重新得到新版本DLL时,必须要重新启动程序,重新选择加载DLL文件,这样的设计是用户无法忍受的。C#也提供了实现动态卸载DLL的方法,通过AppDomain来实现。3.MultiDomainHost,只有GAC代码是共享的,非GAC的Assembly依然会加载到被使用的AppDomain中,这样提高了静态变量的访问。原创 2024-02-26 17:45:16 · 1003 阅读 · 0 评论 -
C#中全局处理异常方式
【代码】C#中全局处理异常方式。原创 2024-02-26 16:58:43 · 669 阅读 · 0 评论 -
WPF中,回车触发按钮点击事件
设置Button的 IsDefault=”True”,即可。原创 2024-02-22 15:58:46 · 702 阅读 · 0 评论 -
WPF中DataGrid垂直滚动条滚动后行号错乱的解决办法
DataGrid 的 EnableRowVirtualization 属性默认值是True,就是说动态加载数据,只实例化屏幕内可见的数据;行头的内容是通过绑定实现的,但是滚动刷新时传入的DataGridRow并不是实际位置的行,而是虚拟的,造成行头显示内容错乱;原文链接:https://blog.csdn.net/qq_29821795/article/details/120409288。方法1:设置EnableRowVirtualization=“False",简单易行,但系统资源的开销大。原创 2024-02-21 13:46:56 · 779 阅读 · 0 评论 -
C#的 Settings.Settings配置文件的使用方法
从此以后,读取都会从系统里保存的值里读取,手工修改App.config里的“用户”范围的属性不会影响到这些属性,但是在调用Reset方法时会从新从App.config里获取“用户”范围的属性写入到系统中。范围为“应用程序”的属性,读取都是从APP.CONFIG里获取,设置也可以通过手工修改App.config改变,但是在程序中无法对其进行赋值,只能读取。3、内存----程序启动后,实例化settings对象,该实例在创建的时候从系统(如果系统中没有就如前面提到的从配置文件中获取)读取在内存中。原创 2024-02-20 14:11:46 · 1086 阅读 · 0 评论 -
String.format()详细用法
String 类有一个强大的字符串格式化方法 format()。下面是常用的方法总结。一、占位符类型String formatted = String.format("%s今年%d岁。", "小李", 25); // "小李今年25岁。"二、字符串和整数格式化 // 将第二个入参拼接到模板中,入参长度如果不足10 左侧用空格补齐,超过10全量输出System.out.println(String.format("%10s, world", "Hello"));// 输出 " Hello,原创 2024-02-19 15:33:34 · 5857 阅读 · 0 评论 -
C# 字符串格式化
也就是说,若要单独使用自定义格式说明符“d”、“f”、“F”、“h”、“m”、“s”、“t”、“y”、“z”、“H”或“M”,请指定“%d”、“%f”、“%F”、“%h”、“%m”、“%s”、“%t”、“%y”、“%z”、“%H”或“%M”。如果“E”、“E+”、“E-”、“e”、“e+”或“e-”中的任何一个字符串出现在格式字符串中,而且后面紧跟至少一个“0”字符,则数字用科学记数法来格式化,在数字和指数之间插入“E”或“e”。“E”、“E-”、“e”或“e-”格式指示符号字符仅置于负指数前面。原创 2024-02-19 15:14:27 · 2107 阅读 · 0 评论 -
关于Thread.sleep方法的一些使用
2、Mutex(互斥体):Mutex也是一种用于实现互斥访问的线程同步机制,它类似于Monitor,但具有更高级的功能。5、定时执行任务:在一些需要按照时间间隔执行任务的场景下,可以使用Thread.Sleep来控制任务的执行时间。例如,在定时器的实现中,可以使用Thread.Sleep来控制任务的执行间隔。例如,在游戏开发中,可以使用Thread.Sleep来模拟玩家的等待时间或者动画效果的展示。当涉及到多线程编程时,除了Thread.Sleep方法,还有一些更高级的线程同步机制可用于控制线程的执行。原创 2024-02-02 04:32:05 · 518 阅读 · 0 评论 -
C# 各数据类型 范围
long -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 有符号 64 位整数。int -2,147,483,648 到 2,147,483,647 有符号 32 位整数。ulong 0 到 18,446,744,073,709,551,615 无符号 64 位整数。类型 大致范围 精度。原创 2024-01-08 09:36:33 · 905 阅读 · 0 评论 -
int 类型取值范围最大能到多少 16进制与2进制之间的转化 16进制占字节问题 16 进制与2进制的关联
0x7fffffff = 一共8个数, 一个 f 是 4个 二进制位 , 两个 f 才占用一个字节。0x7fffffff = 一共8个数, 一个 f 是 4个 二进制位 , 两个 f 才占用一个字节。原文链接:https://blog.csdn.net/judongbin123/article/details/81093275。所以,int占32位的时候,最大可以赋值为:2147483647。也就是0x7fffffff。原创 2024-01-08 09:32:55 · 508 阅读 · 0 评论 -
WPF异常“调用线程无法访问此对象,因为另一个线程拥有该对象 ”
WPF中在对界面进行操作的时候,可能会遇到“调用线程无法访问此对象,因为另一个线程拥有该对象”异常,这是因为WPF中只有UI线程才能操作UI元素,非UI线程要访问UI时就会报异常了。Dispatcher.BeginInvoke()与Invoke()方法。BeginInvoke()异步执行,不等待委托结束就更新,Invoke()同步执行,需等待委托执行完。如:textBox.Text="";原创 2024-01-04 18:20:55 · 633 阅读 · 0 评论 -
C#事件中sender和e参数的理解
EventArgs是事件参数,比如说你用鼠标点击窗体,那么EventArgs是会包含点击的位置等等,它用来辅助你处理事件。sender是事件源,表示触发事件的那个组件,比如说你按下按钮,那么sender就是按钮。原创 2024-01-03 14:43:02 · 847 阅读 · 0 评论 -
C#里面的泛型(T),泛型类,泛型方法,泛型接口等简单解释
这个时候,TClass这个类就是泛型类,而它的构造方法,则和普通的类的构造方法的写法是一样的。当你要实例化这个类型的时候,必须告诉这个类型T代表哪个类型,之后,所有这个类里面被标识了T的地方,都是指你开始实例化指明的类型。这样我们不难理解,T这个东西的作用,其实就是一个通用的容器,制造它的人开始不指定它是用来装什么的,而使用者在使用它的时候要告诉这个容器准备用来装什么,容器知道了用来装什么之后,后面所有存入操作,它都要检查一下你放的东西是不是开始指定的东西类型。如果只写一个重载方法,则可以写成。原创 2023-12-07 10:13:00 · 1462 阅读 · 0 评论 -
C#线程 ConcurrentQueue安全队列介绍
Net Farmework中的普通队列Queue的实现使用了第一种方式,缺点是当队列空间不足会进行扩容,扩容的主要实现是开辟一个原始长度2倍的新数组,然后将原始数组里面的数据复制到新数组中,所以当扩容时就会产生不小的内存开销,在并发的环境中对性能的影响不可小视。当然在调用Queue的构造函数时可以指定默认空间的大小,但是一般情况下数据量是不可预测的,选大了会照成空间浪费,选小了会有复制内存的开销,而且队列扩容以后需要显示调用TrimToSize()方法才能回收掉不使用的内存空间。1.使用数组实现队列。原创 2023-11-22 17:50:14 · 3125 阅读 · 0 评论 -
【浅谈】计算机存储 寄存器,高速缓存,内存和硬盘 栈区,堆区和静态区
像用普通int定义的a和b都是变量,无论是全局变量还是局部变量,都是要放在内存中的,用“register”修饰后的b,可以建议将b的数据1放到寄存器中,但运行的时候,系统会自动判定,至于放不放到寄存器中,还要看系统人老人家怎么看啦~~硬盘是用来做内存扩充的,像我们平常下载的游戏,缓存的资源,都是放在硬盘上,所以硬盘上的空间要明显更大一点,但是想要使用硬盘上的数据时,要将硬盘数据拿到内存中。虽然test运行了七次,但是每次进入后,a加1,同时出作用域,a的数据销毁,再次进入,a的初始数据,还是3。原创 2023-11-21 10:43:38 · 117 阅读 · 0 评论 -
使用windbg分析dump文件的方法
https://zhuanlan.zhihu.com/p/613434365一般操作如下:原创 2023-09-19 14:49:19 · 452 阅读 · 0 评论 -
使用C#为进程创建DUMP文件
程序异常崩溃前使用此类为进程创建DUMP文件,之后可以使用WinDbg等工具进行分析。原创 2023-09-19 09:52:43 · 954 阅读 · 0 评论 -
c# 字符串格式化日期时间
/2017/04/01 星期六 下午 01:16。原文链接:https://blog.csdn.net/yugui/article/details/120009896。原创 2023-09-19 09:48:10 · 4132 阅读 · 0 评论 -
服务端 TCP 连接的 TIME_WAIT 过多问题的分析与解决
可靠的实现 TCP 全双工连接的终止:四次挥手关闭 TCP 连接过程中,最后的 ACK 是由「主动关闭连接」的一端发出的,如果这个 ACK 丢失,则,对方会重发 FIN 请求,因此,在「主动关闭连接」的一段,需要维护一个 time_wait 状态,处理对方重发的 FIN 请求;短时间后,所有的 TIME_WAIT 全都消失,被回收,端口包括服务,均正常。1.TCP 连接建立后,「主动关闭连接」的一端,收到对方的 FIN 请求后,发送 ACK 响应,会处于 time_wait 状态;原创 2023-09-07 11:32:07 · 977 阅读 · 0 评论 -
c#using关键字的作用
c#using关键字的作用原创 2023-09-05 09:28:27 · 1224 阅读 · 0 评论 -
C#中控件的invoke方法
C#中控件的invoke方法原创 2023-08-04 09:50:14 · 864 阅读 · 0 评论 -
Delegate()和Delegate.Invoke()
C# Delegate()和Delegate.Invoke()原创 2023-08-03 17:24:48 · 369 阅读 · 0 评论 -
内存泄漏之DispatcherTimer
上面的代码非常的简单,就是在窗口构造函数执行的时候 new 了一个 DispatcherTimer,“老师”告诉我们,一个变量的生命周期在大括号内,也就是构造函数执行完毕之后timer就应该被回收了,但是事实上,窗口关闭以后,仍然每秒输出当前时间。造成的内存泄漏分析完毕,我们知晓了微软是如何维护计时器的,也知道造成泄漏的根本原因就是还有引用,解决措施就很简单了:在不需要用到计时器的时候Stop就可以了,在Tick方法中停止也是可以的。除了内部被引用外,外部再也没有办法通过正常的途径去找到它了,于是。原创 2023-05-22 11:07:11 · 615 阅读 · 0 评论 -
C#基础之输出换行符号
C#基础之输出换行符号原创 2023-02-20 15:24:33 · 652 阅读 · 0 评论 -
c# 线程定时器 System.Threading.Timer
c# 线程定时器 System.Threading.Timer,处理多条数据实时并发问题原创 2022-12-15 16:45:57 · 775 阅读 · 0 评论 -
何为面向对象的编程思想
面向对象编程思想原创 2022-12-05 10:25:50 · 414 阅读 · 0 评论 -
C#高级--加密解密详解
C# 加密解密详解原创 2022-11-17 09:42:37 · 2414 阅读 · 0 评论 -
C#中float、double以及decimal类型有何不同
C#中float、double以及decimal类型有何不同原创 2022-11-01 15:40:03 · 1494 阅读 · 0 评论 -
c#实现锁屏及禁止键盘和鼠标
c#实现锁屏及禁止键盘和鼠标原创 2022-09-23 13:53:51 · 1507 阅读 · 1 评论 -
如何判断int、double、float类型数据为0或判断一个未知数据类型的为0或相等
如何判断int、double、float类型数据为0或判断一个未知数据类型的为0或相等原创 2022-09-06 15:48:21 · 2796 阅读 · 0 评论 -
依赖注入跟::调用方法,哪种好,有什么区别?
WPF注入方式和直接调用代码区别原创 2022-08-03 15:56:07 · 271 阅读 · 0 评论 -
Visual Studio 中为文件添加链接
Visual Studio 中为文件添加链接(快捷方式、引用?) - 走看看在一个解决方案中一般来说包括了多个项目,可能有一具项目的某文件会被其它几个项目使用,为了保持其文件的统一性,更好的管理及同步,采用将文件添加为链接更为有效。如图:在这个项目中,App.config可以被其它两个项目使用,因为App.config内容完全相同,所以我们只需一个App.config文件即可,其它两个作为链接。如果添加链接呢,按如下方式即可。右击需要添加链接的项目-->Add --> .原创 2022-05-17 12:41:01 · 1209 阅读 · 0 评论 -
SynchronizationContext
https://blog.csdn.net/weixin_44876165/article/details/106813367SynchronizationContext在通讯中充当传输者的角色,实现功能就是一个线程和另外一个线程的通讯。需要注意的是,不是每个线程都附加SynchronizationContext这个对象,只有UI线程是一直拥有的。故获取SynchronizationContext也只能在UI线程上进行SynchronizationContext context = Synchr..原创 2022-05-09 00:18:25 · 215 阅读 · 0 评论 -
利刃 MVVMLight 3:双向数据绑定
https://www.cnblogs.com/wzh2010/p/6286923.html上篇我们已经了解了MVVM的框架结构和运行原理。这里我们来看一下伟大的双向数据绑定。说到双向绑定,大家比较熟悉的应该就是AngularJS了,几乎所有的AngularJS 系列教程的开篇几章都要涉及到,真的是很好用。表达的效果很简单:就是在界面的操作对数据模型的修改能实时反映到数据;而数据的变更能实时展现到界面。即视图数据模型(ViewModel)和视图(View)之间的双向绑定和触发。..原创 2022-03-22 15:20:55 · 225 阅读 · 1 评论 -
利刃 MVVMLight 2:Model、View、ViewModel结构以及全局视图模型注入器的说明
https://www.cnblogs.com/wzh2010/p/6285990.html上一篇我们已经介绍了如何使用NuGet把MVVMLight应用到我们的WPF项目中。这篇我们来了解下一个基本的MVVMLight框架所必须的结构和运行模式。MVVMLight安装之后,我们可以看到简易的框架布局,如上篇,生成了一个ViewModel文件夹,ViewModel层的内容都放在这边,除了Main对象的ViewModel之外,还包含一个ViewModelLocator文件,用来注入当前的View.原创 2022-03-21 15:38:31 · 530 阅读 · 2 评论 -
利刃 MVVMLight 1:MVVMLight介绍以及在项目中的使用
https://www.cnblogs.com/wzh2010/p/6285954.html一、MVVM 和 MVVMLight介绍MVVM是Model-View-ViewModel的简写。类似于目前比较流行的MVC、MVP设计模式,主要目的是为了分离视图(View)和模型(Model)的耦合。它是一种极度优秀的设计模式,但并非框架级别的东西,由MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构。立足于原有MVP框架并且把WPF的..原创 2022-03-21 15:14:17 · 1503 阅读 · 0 评论