随笔分类 - C#
摘要:1.什么是命令? 我们通过一个场景来说明这个问题。假设某天某个时间点,公司领导对小王说:“小王,去前台帮我取一下快递。”这里,领导对小王所说的话就可以理解为命令,简而言之,命令就是一段信息,那为什么还要牵扯出“领导”和“小王”呢?那是因为他们是和命令相关的且不可或缺的部分,他们是产生命令(命令源)和
阅读全文
摘要:背景知识 Matrix是一个用于在二维坐标系中进行坐标转换的3*3仿射变换矩阵。什么是仿射变换?为什么是3*3,不是2*2?好的,让我们来复习一下(以下内容来自百度百科): 仿射变换,又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。仿射变换是在几何上定义
阅读全文
摘要:网上关于Actor的内容有很多,这里提供一种简单的实现。直接上码: 1 public abstract class Actor<T> 2 { 3 public static readonly int StateWaiting = 0; 4 public static readonly int Sta
阅读全文
摘要:转载一篇关于“.net中模拟键盘和鼠标操作”,链接如下: .net中模拟键盘和鼠标操作 - 六十点击量 - 博客园 (cnblogs.com) 需要说明的是,有时候在click操作之前,需要调用move方法把鼠标移动到click的位置。 文中的代码文件也可以从这里simulation下载。
阅读全文
摘要:本文通过对InjectTouchInput API的封装,实现模拟触屏操作。微软官方文档说明,在调用InjectTouchInput API之前,需要调用InitializeTouchInjection API来配置触摸注入的上下文。下面直接上代码: 1 class InputInjector 2
阅读全文
摘要:WPF中很多代码写起来很繁琐,比如自定义依赖属性、附加属性、路由事件等,这些代码虽然有它们自己的统一格式,但是要通过完全手写还是比较麻烦的,不小心还容易写错,所以这个时候通过code snippet会比较快捷、方便。例如,想要添加一个自定义依赖属性的时候,只要先敲下propdp,然后按两次tab键即
阅读全文
摘要:我们知道,在调用构造函数时,C#会先对类中的字段、属性进行初始化操作。那么,问题来了,为什么在调用构造函数前会初始化类中的字段和属性呢?让我们一起通过ildasm来揭开构造函数的面纱吧。 需要反编译的C#代码如下: 使用ildasm工具对.exe文件进行IL反编译,下面是构造函数的IL代码: 通过对
阅读全文
摘要:有时候会把c#类中成员的执行顺序搞混,所以在此做个小结,以备不时之需:1.不含静态构造函数的非静态类 实例化时:静态变量、属性初始化 -> 非静态变量、属性初始化 -> 构造函数2.含静态构造函数和静态方法的非静态类 实例化时:静态变量、属性初始化 -> 静态构造函数 -> 非静态变量、属性初始化
阅读全文