自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (12)
  • 收藏
  • 关注

原创 C# 基础知识.局部变量 一定要初始化吗

情况是否报错原因所有执行路径都赋值​✅ 不报错编译器流分析确认安全部分路径未赋值​❌ 报错存在未定义行为的风险使用前肯定会被赋值​✅ 不报错编译器能分析控制流out参数​✅ 不报错特殊规则保证会被赋值结论:局部变量没初始化不一定会报错,只有当编译器通过流分析发现存在某条执行路径​ where 变量在使用前未被赋值时,才会报错。这种智能分析使得规则既安全又实用。

2025-12-04 22:37:22 210

原创 C# 异步方法

/ 2. 处理支付 - 第二步(必须等第一步完成) var paymentResult = await paymentService.ProcessPaymentAsync(orderId);// 4. 发送确认邮件 - 第四步(必须等第三步完成) await emailService.SendConfirmationAsync(orderId);

2025-11-18 20:10:17 379

原创 C#异步事件处理--async void

如果要求事件处理程序返回。

2025-11-18 19:52:16 232

原创 类型转换汇总 之C#

set;// 显式转换// 1. 使用 TryParse 进行字符串到数值的转换// 2. 使用 as 运算符进行安全引用类型转换if (str!// 3. 使用 is 进行类型检查和模式匹配// 4. 使用 Convert 类处理边界情况。

2025-10-23 22:40:28 286

原创 C# 数据加载专题 之泛型序列化

适合需要从统一格式(XML)创建多种配置对象的场景,是类型安全的对象工厂的典型实现。"创建一个从XML配置文件反序列化的泛型对象,该对象必须继承自。为调用方提供简洁的类型推断(无需显式类型转换)将 XML 反序列化的共性逻辑抽象到基类。指定XML配置文件的绝对/相对路径。参数:XML配置文件的完整路径。返回反序列化后的具体类型对象。​​(3) 控制实例化​​。​:通过泛型参数实现变体。通过泛型约束同时保证 ​。约束保证所有类型都有。​​(2) 扩展性​​。具体类型由调用方指定。(1) 类型安全​​。

2025-10-19 20:38:11 352 1

原创 WPF 疑点汇总2.HorizontalAlignment和 HorizontalContentAlignment

在 WPF 中,和是两个常用的布局属性,它们控制元素或其内容在水平方向上的对齐方式。虽然它们的名称相似,但作用对象和范围有所不同。

2025-10-15 07:55:03 337

原创 WPF 疑点汇总1.Visibility.Hidden和Visibility.Collapsed

【代码】WPF 疑点汇总1.Visibility.Hidden和Visibility.Collapsed。

2025-10-14 21:51:18 203

原创 C# 核心--事件型接口

​​定义一个接口,其中包含一个或多个事件成员(语法)​​​​实现该接口的类中,如何正确地提供(实现)这些事件(语法)​// 定义一个事件成员event是关键字,表示该成员是一个事件;你也可以定义 ​​自定义委托类型的事件​​,或使用 ​​泛型// 定义一个接口,其中包含一个事件//事件:状态改变时触发,接口的成员隐式Public,不能有任何修饰符这个接口的意思是:​​任何实现了的类,都必须提供一个名为的事件,类型为。项目说明​​事件定义在接口中​​使用或语法​​实现类必须实现接口事件​​。

2025-10-14 21:49:17 353

原创 WPF中核心接口 INotifyPropertyChanged​

它包含一个事件:​​​​:当某个 ​​绑定属性的值发生变化时​​,类需要触发这个事件,并传入发生变化的属性名(通常是WPF 的绑定系统(如)会 ​​监听这个事件​​,一旦属性值变了,就会 ​​自动更新 UI​​。项目说明​​INotifyPropertyChanged 是什么?​​一个接口,用于在属性值更改时通知绑定系统(WPF 数据绑定的核心)​​类级别实现(推荐)​​。

2025-10-12 12:28:11 1002

原创 WPF 绑定机制实现原理

要点说明​​Binding​​配置绑定的元数据(Path、Source、Mode等)​​运行时绑定实例,负责实际的值同步与事件监听​​WPF 属性系统基石,支持变更通知与绑定​​CLR 对象实现此接口以支持属性变更通知​​支持复杂路径绑定,如嵌套对象属性​​绑定流程​​建立目标<->源连接,初始同步,订阅变更,双向更新​​更新机制​​依赖 BindingMode,决定数据流向与同步时机。

2025-10-12 09:50:28 815

原创 WPF 之​​数据绑定一(Data Binding)

条件是否自动更新目标绑定模式为 TwoWay / OneWay✅ 是绑定源是 CLR 对象(非 DependencyObject)必须实现,并在属性更改时触发事件 ✅绑定源是 DependencyObject,绑定属性是 DependencyProperty✅ 自动支持变更通知没有实现 INotifyPropertyChanged 或不是依赖属性❌ 不会自动更新,UI 不会反映源的变化。

2025-10-12 09:43:00 1017

原创 WPF 深入系列.2.布局系统.布局控件.StackPanel

StackPanel 是 WPF 中用于垂直或水平堆叠子元素的简单布局控件。它非常适合用来创建一组线性排列的控件,如按钮、文本框等。下面是 StackPanel 的详细使用教程:1. 基本概念StackPanel 是一个布局控件,它会按照指定的方向(水平或垂直)依次排列它的子元素。所有子元素会根据其内容占据所需的空间,且不会重叠。2. 创建 StackPanelStackPanel 的创建非常简单,,这意味着所有子元素将从上到下依次排列。上效果在上面的例子中,三个按钮将会从上到下排列;

2025-09-24 19:45:44 796

原创 WPF 深入系列.2.布局系统.布局控件.Grid

将控件放入Grid中时,可以使用Grid.Row和附加属性来指定控件所在的行和列。有时候你可能需要让一个控件跨越多个行或列,这时可以使用和属性。最终效果如下第二行 第二列 设置了HorizonAlign=Left 同时大小是Auto ,大小自适应,水平居左对齐第二行 第三列 设置了Margin 属性控制外边距。

2025-09-24 18:58:43 530

原创 WPF 深入系列.2.布局系统.尺寸属性

了解布局计算的发生方式和时间对于在 WPF 中创建用户界面至关重要WPF布局系统是一个"测量-排列"的二阶段过程,所有尺寸属性都在这一过程中发挥作用。了解尺寸属性的层次关系,有助于我们更好地控制UI元素的布局行为,避免出现意外的尺寸变化或布局问题。

2025-09-24 15:59:45 806

原创 WPF 深入系列.1.名字空间映射

x:Classx:Key<Grid></Grid></Window>附:空间映射语法资源路径:经典!经典!经典!XAML 中导入程序集及引用命名空间_xmlns:sys="clr-namespace:system;assembly=mscorlib-优快云博客。

2025-09-22 21:55:16 782

原创 QT 之DOM方式解析XMLzwg

DOM是Document Object。

2023-11-15 20:47:35 440

原创 QT 界面组件模型 BoxModel

QT 组件盒子模型

2023-01-14 16:14:45 599

原创 QListWidget 设置样式表后QListWidgetItem调用setBackgroundColor无效解决办法

法1.去掉QSS完全用成员函数设置item;其实QT 的QSS是一个强大而又方便的特性!法2.完全用QSS在两处设置item;

2023-01-11 22:20:36 2372 1

原创 QT 样式表之选择器(一)

QT 样式表选择器剖析

2023-01-07 18:20:34 410

原创 QT 资源系统的使用心得

QT 资源系统理解

2023-01-06 22:12:41 288

原创 Qt Designer中 加入资源文件

QT QRC文件 资源文件

2023-01-06 21:10:00 1358

原创 再谈 QtDesigner 可视化连接信号 槽

Qt Designer 可视化编辑信号槽

2022-12-28 10:09:32 1685

原创 QObject线程依附性以及QT多线程

QObject以及多线程

2022-12-26 15:33:40 688 1

原创 Q_DECLARE_METATYPE 的应用场景

QT功能很强大,但如果不了解其特性,在使用中就不能发挥出其强大的特性,如Q_DECLARE_METATYPE 元对象系统。

2022-11-27 16:59:30 511

原创 Q_ENUM的作用以及QMetaEnum的优势

传统的枚举类型 在增加程序可读性方面还不够,而QT中的QMetaEnum做了很大的优化,功能很强大。

2022-11-27 11:11:18 1206

原创 QT+VS2017 下LNK2001: 无法解析的外部符号(隐蔽的问题)

VS QT LINK 2001

2022-09-11 21:23:52 770

原创 Libmodbus 的下载与编译

Libmodbus 编译与下载

2022-09-10 10:42:39 2505

原创 程序快捷开发(二) 动态库与静态库

代码重用 动态库 静态库

2022-09-07 11:38:01 456

原创 程序开发捷径(一 ) 属性表

VS 程序开发捷径之一

2022-09-07 09:46:31 474

原创 深入理解Modbus通讯

Modbus

2022-09-04 17:14:42 3325

原创 QT 之序列化反序列化

QT 数据读写

2022-08-14 12:25:11 2621

原创 MFC框架剖析

创建MFC窗口需要用来的类:CWinAppCFrameWndCWinApp是一个基类,你通过它来继承Windows应用程序对象。应用程序对象为你提供了初始化应用程序(以及它的每一个实例)和运行应用程序所需的成员函数。每个使用微软基础类库的应用程序都只能包含一个从CWinApp继承的对象。当Windows调用WinMain函数时,这个对象在其它C++全局对象都已经生成并且可用之后才被创建,WinMain函数是由微软基础类库提供的。将你的CWinApp对象定义为全局的。当你从CWinApp继承

2022-04-11 14:41:05 2309

原创 C++继承时的名字遮蔽

如果派生类中的成员(包括成员变量和成员函数)和基类中的成员重名,那么就会遮蔽从基类继承过来的成员。所谓遮蔽,就是在派生类中使用该成员(包括在定义派生类时使用,也包括通过派生类对象访问该成员)时,实际上使用的是派生类新增的成员,而不是从基类继承来的。范例#include<iostream>using namespace std;//基类Peopleclass People{public: void show();protected: char *m_nam

2022-03-31 14:16:10 166

原创 C++ 虚函数详解

虚函数对于多态具有决定性的作用,有虚函数才能构成多态规则1) 只需要在虚函数的声明处加上virtual 关键字,函数定义处可以加也可以不加2) 为了方便,你可以只将基类中的函数声明为虚函数,这样所有派生类中具有遮蔽(覆盖)关系的同名函数都将自动成为虚函数3) 当在基类中定义了虚函数时,如果派生类没有定义新的函数来遮蔽此函数,那么将使用基类的虚函数4) 只有派生类的虚函数遮蔽基类的虚函数(函数原型相同)才能构成多态(通过基类指针访问派生类函数)。例如基类虚函数的原型为virtual vo.

2022-03-31 14:05:31 911

原创 C++ 虚函数/纯虚函数/抽象类/接口

虚函数定义一个函数为虚函数,不代表函数为不被实现的函数;定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。class A{public: virtual void foo() { cout<<"A::foo() is called"<<endl; }};class B:public A{public: void foo() { cout<<"B::foo() is called"<<endl; }};int ma

2022-03-29 21:54:14 3385

原创 dll剖析--->导出类

前面介绍了怎么从DLL中导出函数和变量,实际上导出类的方法也是大同小异,废话就不多说了,下面给个简单例子示范一下,也就不多做解释了。DLL头文件:#ifndef_DLL_SAMPLE_H#define_DLL_SAMPLE_H//通过宏来控制是导入还是导出#ifdef_DLL_SAMPLE#defineDLL_SAMPLE_API__declspec(dllexport)#else#defineDLL_SAMPLE_API__declspec(dllimport)#...

2022-03-27 22:38:35 701

原创 dll剖析--->导出变量

声明为导出变量时,同样有两种方法:第一种是用__declspec进行导出声明#ifndef_DLL_SAMPLE_H#define_DLL_SAMPLE_H//如果定义了C++编译器,那么声明为C链接方式#ifdef__cplusplusextern"C"{#endif//通过宏来控制是导入还是导出#ifdef_DLL_SAMPLE#defineDLL_SAMPLE_API__declspec(dllexport)#else#defineDLL_SAMPL...

2022-03-27 22:33:47 477

原创 dll 剖析--->使用|查找|调试

当一个DLL被生成后,它创建了一个.dll文件和一个.lib文件;这两个都是你需要的。要使用DLL,就需要载入这个DLL。隐式链接这里有两个方法来载入一个DLL;一个方法是捷径另一个则相比要复杂些。捷径是只链接到你.lib 文件并将.dll文件置入你的新项目的路径中去。因此,创建一个新的空的Win32控制台项目并添加一个源文件。将你做的DLL放入你的新项目相同的目录下#include"stdafx.h"#include"DLLSample.h"#pragmacomment(lib,...

2022-03-27 22:27:47 2553

原创 dll 剖析--->创建

动态链接库(DLL)是从C语言函数库和Pascal库单元的概念发展而来的。所有的C语言标准库函数都存放在某一函数库中。在链接应用程序的过程中,链接器从库文件中拷贝程序调用的函数代码,并把这些函数代码添加到可执行文件中。这种方法同只把函数储存在已编译的OBJ文件中相比更有利于代码的重用。但随着Windows这样的多任务环境的出现,函数库的方法显得过于累赘。如果为了完成屏幕输出、消息处理、内存管理、对话框等操作,每个程序都不得不拥有自己的函数,那么Windows程序将变得非常庞大。Windows的发展要求允许同

2022-03-27 22:22:35 174

原创 C++ 工厂模式/抽象工厂剖析

正文在面向对象的编程中,一般通过继承和虚函数来提供抽象能力,多态让程序在执行期,调用者只需要看到父类类型,而不需要关心继承的子类类型。举个例子: 比如有个游戏,里面的游戏的活动对象为动物,比如有老虎和猫,会对主人公进行攻击。那么可能会实现为如下:代码如下:class Animal { public: virtual void Attack() = 0; }; class Tiger : public Animal { public: virtual void At..

2022-03-26 15:35:58 334

空压机PLC控制方案

空压机PLC控制方案

2013-08-11

MFC经典价架构

自动化开发是经常需要一个线程实时扫描外部IO信号,创建一个线程专用于此,可以实时获取信号状态,并及时作出相应的处理,提示或响应。

2018-05-20

变频器应用

变频器行业应用

2013-04-19

通讯应用专题

各类通讯比较,各类通讯比较,各类通讯比较,各类通讯比较,

2013-04-19

300语句表手册

300编程应用

2013-05-14

数字电子技术11

数字电子技术

2013-07-22

MFC快捷键操作

自动化开发是经常需要一个外部输入,但界面菜单或按钮已经排布完毕,此时用快捷键很合适,也可以隐藏此功能对于不相关的人员。

2018-05-20

空压机 实例

空压机实例,具体实施方案,非常实用。空压机实例,具体实施方案,非常实用。

2013-08-12

数字数字电子技术

数字电子技术

2013-07-22

RS485实用技术

485通讯实用技术。485通讯实用技术。485通讯实

2013-04-19

空空如也

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

TA关注的人

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