自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 C# 为什么高手都是用IsNullOrWhiteSpace对字符串判空?

这样针对str = ""也是可以的,但是大多数场景是在方法的 入口处判空,这个字符串有可能是null,也有可能是" ",甚至是"\n",上面这种判空方法显示不能覆盖这么多场景;方法三 :但是IsNullOrEmpty在字符串为" ","\n","\t",时候就无能为力了,为了覆盖这些场景,高手们一般判空使用方法IsNullOrWhiteSpace。string.Empty、str2 = ""、null,都可以用。运行结果:a is empty。

2023-02-23 11:15:58 160

原创 C# 并行编程避坑指南之-Try Catch系列

自从.NET Framework 4.5+(含4.5)提供了Task开启线程后,基本上Thread的使用频率就大幅度降低了,但是一些老项目,或者老程序还是习惯用Thread去做,如果一定要使用Thred,那我们就必须在代码中使用try、catch块去处理异常的。Background,设置为后台线程,而threadpool则默认是后台线程,Task由于是用线程池实现的本地队列,性能优越,同时Task提供了丰富的API来管理线程、控制。try catch应该放置到代码块内部去捕获异常。

2023-02-23 11:14:16 147

原创 C# WPF MVVM模式[经典]案例

Caliburn.Micro(简称CM)一经推出便备受推崇,作为一款MVVM开发模式的经典框架,越来越多的受到wpf开发者的青睐.我们看一下官方的描述:Caliburn是一个为Xaml平台设计的小型但功能强大的框架。目前CM框架还不不停的开发和迭代中,目前最新版本4.0.212,推出于2022年8月27日,已经可以支持.NET7。① 首先是HelloWorld讲解,这里启动代码:Startup.CS。放置数据模型,即mvvm中的M;HelloWorld.ViewModels:模型视图,即VM;

2023-02-19 15:00:56 557

转载 C#编程中的66个好习惯

36. 除非使用interop(COM+ 或其他的dll)代码否则不要使用不安全的代码(unsafe code)。17. 在捕获(catch)语句的抛出异常子句中(throw),总是抛出原始异常维护原始错误的堆栈分配。35. 在不是sealed的类中总是将public 和 protected的方法标记成virtual的。61. 除非你想重写子类中存在名称冲突的成员或者调用基类的构造函数否则不要使用base来访问基类的成员。b) 只有在该方法需要被其他的开发者使用的时候才使用方法级的注释。

2023-02-19 14:57:23 84

原创 C# 并行编程避坑指南之-Try Catch系列

自从.NET Framework 4.5+(含4.5)提供了Task开启线程后,基本上Thread的使用频率就大幅度降低了,但是一些老项目,或者老程序还是习惯用Thread去做,如果一定要使用Thred,那我们就必须在代码中使用try、catch块去处理异常的。Background,设置为后台线程,而threadpool则默认是后台线程,Task由于是用线程池实现的本地队列,性能优越,同时Task提供了丰富的API来管理线程、控制。try catch应该放置到代码块内部去捕获异常。

2023-02-15 11:25:52 77

原创 C# 为什么高手喜欢用StartsWith而不是Substring进行字符串匹配?

那么既然,两种方式都能实现,这两种方法有没有什么区别呢?当然有的,而且大多数时候,一个老练的程序员都会用StartsWith而不是Substring,为什么呢?startIndex 加 length 指示不在此实例内的位置。,所以当字符串小于你要截取的长度时,你如果没用try catch去捕获异常,代码就崩溃了.所以,我们需要慎用Substring,如果非要用,一定需要进行异常处理。运行后,方法一直接崩了,但是方法2则可以正确运行出来结果。诚然,两种方法都输出了正确的结果。

2023-02-14 17:05:41 132

原创 C# 控制台设置

我们经常使用控制台做一些代码的测试、调试,这样方便又快捷,但是控制台的相关用法我们日常可能使用到的很少,这节就展示一些你可以很少用到但是有很使用的控制台设置方法.//将控制台的前景色和背景色设为默认值。Console.ReadLine():读取一行的输入内容,返回string类型。是要求用户输入不换行,这里是用来固定控制台的,否则他很快就会闪掉。Console.Read():读取一个字符的输入,返回int类型。3. 获取或设置要显示在控制台标题栏中的标题。是输出文字并换行,Line是换行的意思;

2023-02-14 11:39:43 353

原创 C# WPF通过WindowChrome自定义窗体

概述在WPF界面开发中,系统默认的窗口比较丑,有时候想自定义窗体,比如微信的客户端窗口这样:使得左边的一块顶到最上端,如下图所示:这时候我们可以去掉默认的窗体边框,然后添加最小最大和关闭的按钮,然后重写相关的功能实现但是这样做的话,这就不贴近原生窗口体验了,-. 需要写大量代码实现Window本来的拖动、改变大小、最大化最小化等行为;-. 各种其它细节的修改,比如:最大化会覆盖任务栏等;为了保持最大的原生的同时以少量代码实现自定义窗体,我们使用WindowChrome去实现会更加便捷和优雅.

2023-02-13 14:56:41 385

原创 C# 排序的多种实现方式(经典)

方法二: 加入这个学生成绩有重复的,对于重复的成绩按照年龄再排序:这里列举了2种方法,方法一注释了。排序是我们编程时的常用操作,实现方式也有很多种,本篇文章列举几种我常用的用法,希望对大家有用!方法一: 一个集合存放学生的信息,按照学生的成绩升序排列:这里列举了2种方法,方法一注释了。第一种:我们最熟悉的冒泡排序法:即每个值都和它后面的数值比较,每次拿出最小值。方法二:利用List的OrderBy与OrderByDescending方法。方法一:利用List 自带的Sort排序方法。

2023-02-13 14:53:18 262

原创 C# WPF设备监控软件(经典)-升级篇

其它部分代码在上节已经有展示讲解,本节不再详说。

2023-02-11 10:19:24 419

原创 C# WPF设备监控软件(经典)-上篇

本节主要介绍本软件的用法以及功能,代码部分下篇详细展开讲解

2023-02-10 11:10:22 284

原创 C# WPF设备监控软件(经典)-下篇

本节主要对功能实现和代码部分展开讲解.

2023-02-09 11:35:36 164

原创 C# Task.Delay()和Thread.Sleep()有什么区别?

很多时候我们需要做一段延时处理,就直接Thread.Sleep(n)处理了,但实际上延时也可以用Task.Delay(n),那二者之间有没有区别呢?

2023-02-09 11:05:55 298

原创 C# 窗体与子线程数据交互

1)BeginInvoke:这里的“异步”并不是针对UI线程,而是说当Control的BeginInvoke在某个子线程中调用时,子线程中BeginInvoke后面的代码(弹出“Finished”框框)会先执行,然后等到BeginInvoke中的那个委托方法完全执行完毕之后Label才会被赋值。所以应该“一次性地把数据在子线程中先全部处理干净(在Invoke,BeginInvoke,Send或者Post前得出结果,写代码),然后一次性发送通知给窗体,更新界面即可)。那么如何实现C#窗体与子线程的交互呢?

2023-01-05 14:06:59 105

原创 C# WPF后台代码动态添加控件

以上演示部分我们可以看到我前台的部分界面在窗体加载后并没有显示,而是选择文件解析后自动产生的,这种场景有时候也挺常用,特别是有大量同类型的数据显示到同类型的控件中时,我们就可以通过导入txt、Xml等文件的形式然后自动生成. 本地主要是举例演示实现这一功能,使用场景造得可能并不恰当,大家忍受下。在wpf开发中,虽然可以通过XMAL编写炫酷的界面,但是有时候需要动态定义控件即:前台界面控件数量或者类型需要解析的数据或者其它条件确认再生成,这时候我们就需要通过后台cs中编写代码实现这一功能。

2022-12-28 16:25:07 1900

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除