.NET
文章平均质量分 70
SlimeNull
.NET 与 C# 狂热信徒
展开
-
[.NET] 查询当前已安装所有 Win32 与 UWP 应用
通过各种方式, 查询 Windows 中以安装的 Win32 和 UWP 应用, 包括使用 WinAPI, 注册表, COM, 以及 Win SDK原创 2024-02-02 22:08:42 · 1108 阅读 · 0 评论 -
[Unity] 基于迭代器的协程底层原理详解
Unity 协程的本质无非就是在合适的实际执行迭代器的MoveNext方法. 对当前正在等待的对象进行条件判断, 如果满足条件, 则MoveNext, 否则就不执行.原创 2023-12-13 15:37:16 · 1460 阅读 · 0 评论 -
[C#] 基于 yield 语句的迭代器逻辑懒执行
众所周知, C# 可以通过yield语句来快速向或者类型的方法返回值返回一个元素. 但它还有另外一个特性, 就是其内部逻辑的懒执行. 每两个yield语句之间的逻辑都是一个状态, 只有在调用迭代器的MoveNext方法后, 才会执行下一个状态的逻辑.原创 2023-12-08 19:22:09 · 600 阅读 · 0 评论 -
在 System.Text.Json 中使用构造函数进行反序列化
这里, 我们暴露了一个公共的构造函数, 传入 username 与 password, 并对只读属性进行初始化. 这里, 构造函数的参数名和属性名必须是一一对应的, 允许大小写不同.另外, 如果你的属性类型和参数类型不一致, 例如构造函数要求传入 string, 而属性是 Uri 的时候, 也是不允许的, System.Text.Json 无法识别它. 示例。原创 2023-11-27 11:26:35 · 499 阅读 · 0 评论 -
[.NET] Speex 语音编解码介绍, 使用, 代码示例
Speex 是一个开源的, 适合语音编解码的算法, 常应用于网络电话中.在下面的的介绍中, 我们将使用对 Speex 编码在 .NET 中的使用做介绍SpeexSharp 可以在 nuget 中直接安装, 并且已经封装了编解码器的类供使用. 如果你不希望了解 Speex 的具体编解码过程, 可以忽略下面的 ‘编码’ 和 ‘解码’ 部分, 只看 Speex 的介绍, 然后直接使用这些类进行编解码.原创 2023-11-13 09:45:19 · 556 阅读 · 0 评论 -
[Unity] 个人编码规范与命名准则参考
Unity C# 在写的过程中, 和纯 C# 是有很大出入的. 甚至说, Unity C# 就是邪教. 例如它的命名规范与 C# 是不一致的, 而且由于游戏引擎的介入, 编写时的习惯相较于 C# 来讲, 也需要有所改变.原创 2023-10-31 08:15:56 · 1049 阅读 · 0 评论 -
[.NET/WPF] 设置按钮, 以及其他任何包含边框的控件的圆角
在 WPF 中, 按钮包含一个 “边框”, 很多时候需要设置按钮的圆角, 但是按钮并没有提供一个属性用来设置边框圆角.下面以按钮为例, 列举几种常用的设置圆角的方式.原创 2023-09-02 08:59:24 · 1243 阅读 · 0 评论 -
[Unity] 单例设计模式, 可供继承的单例组件模板类
Unity 单例模板类原创 2023-08-28 20:22:36 · 1049 阅读 · 0 评论 -
[Unity] 基础的编程思想, 组件式开发
熟悉 C# 开发的朋友, 在刚进入 Unity 开发时, 不可避免的会有一些迷惑, 例如不清楚 Unity 自己的思想, 如何设计与架构一个应用程序之类的. 本篇文章简要的介绍一下 Unity 的基础编程思想.原创 2023-08-18 16:55:42 · 618 阅读 · 0 评论 -
[.NET/WPF] CommunityToolkit.Mvvm 异步指令
CommunityToolkit.Mvvm 中的 RelayCommand 除了支持最简单的同步方法, 还支持以 Task 作为返回值的异步方法.原创 2023-08-18 14:36:49 · 1676 阅读 · 0 评论 -
EV 录屏修复小工具
我用 C# 写了一个 EV 录屏修复小工具.原创 2023-08-15 15:37:35 · 2582 阅读 · 11 评论 -
[C#] 简单的俄罗斯方块实现
简单控制台俄罗斯方块实现原创 2023-08-09 09:36:33 · 2112 阅读 · 0 评论 -
[C#] 使用 ReadConsoleInput 所需要注意的问题.
使用 ReadConsoleInput, 需要手动启用鼠标输入, 关闭快速编辑模式, 并删去任何读取标准输入的逻辑, 只使用 ReadConsoleInput原创 2023-06-27 20:52:43 · 410 阅读 · 0 评论 -
[.NET/C#] 委托与 Lambda 表达式, 语句详解
在 C# 中, 委托与 Lambda 是最常用的功能之一, 诸如多线程, 可迭代类型的 LINQ 操作, 回调, 都是借助委托完成的. 它在 C 语言对应的是函数指针, 在 C++ 中对应的是 `std::function`原创 2023-05-29 21:46:34 · 1010 阅读 · 0 评论 -
[Win32] 窗体暗色模式, C++, WinForm, WPF 使用方法, 判断颜色模式, 响应颜色变更消息, 设置标题栏暗色.
Win32 暗色模式适配, C++, WinForm, WPF 判断当前颜色模式, 响应颜色变更消息, 设置标题栏暗色原创 2023-04-04 17:32:08 · 1959 阅读 · 2 评论 -
[WPF] 资源, 静态资源, 动态资源的使用及注意事项. 使用资源字典进行 “语言国际化“ 与 “颜色模式切换“
资源, 静态与动态资源, 基于资源实现语言国际化及配色切换原创 2023-04-03 13:36:18 · 2051 阅读 · 0 评论 -
[WPF] 多页面程序基本跳转
使用 WPF 实现较为便捷的多页面跳转.原创 2023-04-01 21:00:13 · 5256 阅读 · 3 评论 -
[WPF] 集合元素数据绑定与模板
在 WPF 中使用 ItemsControl 进行集合数据的绑定原创 2023-04-01 16:53:16 · 1314 阅读 · 0 评论 -
[.NET] 结构体布局详解与结构体内存对齐具体方式
.NET 结构体有三种布局方式, 序列布局, 显式布局, 自动布局, 其中序列布局存在 "内存对齐" 现象, 内存对齐有两种情况, 一个是字段自己的要求, 一个是当字段大小小于包大小时, 使用包作为对齐要求调整偏移量. 如果不希望进行内存对齐, 指定 Pack 为 1 即可.自动布局的结构体不应该进行与非托管的互操作, 因为成员顺序会改变原创 2023-01-11 03:16:53 · 975 阅读 · 3 评论 -
[.NET] 平台调用(P/Invoke) 与 DllImport 使用的相关讲解与注意事项,
P/Invoke 实现, DllImport 使用及成员变量概述, 字符串传值方式, 托管字符串对于不同字符集函数字符串的封送方式, 指针参数的正确声明姿势, DllImport 搜找入口点的大概逻辑原创 2023-01-06 03:59:30 · 2129 阅读 · 6 评论 -
[C#, 笔记] 启用虚拟终端处理 (使用 ANSI 转义序列前需启用)
无法使用 ANSI 转义序列, 无法通过 \e \1b 逃逸字符打印彩色或格式化内容, 通过调用 WinAPI 启用虚拟终端处理来解决问题原创 2022-11-07 06:00:11 · 296 阅读 · 0 评论 -
[C#,笔记] NAudio 傅里叶变换的 forward 参数与 m 参数
NAudio FourierTransform.FFT 的参数值原创 2022-10-25 07:48:33 · 487 阅读 · 0 评论 -
[笔记] WPF TextBox GetRectFromCharacterIndex 返回 Width 为 0
WPF TextBox GetRectFromCharacterIndex 返回 Width 为 0, 获取指定字符的位置与宽高原创 2022-10-10 10:22:17 · 133 阅读 · 0 评论 -
[Unity] 碰撞器, 触发器, 刚体,Dynamic, Kinematic, Static, OnCollision, OnTrigger 全讲
Unity 碰撞相关的几乎所有基础知识都在这里了, 高度整合以及精心标注!原创 2022-09-27 14:51:27 · 3732 阅读 · 0 评论 -
[Unity] Awake 与 Start 的使用, 为什么将 GetComponent 逻辑放到 Awake 中
震惊, 在 Start 中初始化变量竟然会引发如此严重的问题! 性能下降, 逻辑异常, 到底是人性的扭曲还是道德的沦丧?原创 2022-09-27 14:16:18 · 1612 阅读 · 1 评论 -
[C#] 如何优雅的解决 DBNull 问题
什么是 DBNull 问题指从数据库取出数据时, 数据为空, 表现为 DBNull 无法转换为其他类型异常示例:// reader 为 DbDataReaderDateTime value = reader.GetDateTime(0); // 在这里如果数据为空, 则会抛出异常普通的解决方式:DateTime value = reader.IsDBNull(0) ? default(DateTime) : reader.GetDateTime(0);优雅而又牛啤的解决方式:// 新建.原创 2021-07-14 23:38:02 · 3874 阅读 · 0 评论 -
[C#] 使用 NullLib.TickAnimation.Drawing 实现 WinForm 过渡动画
NullLib.TickAnimation 用于实现对一个对象的属性(Property), 以指定的计时函数, 在一定时间内从一个值, 平滑的过渡到另一个值.例如你可以使用它将一个 WinForm 窗体的 Bounds 从一个值过渡到另一个值以实现窗体位置与尺寸的过渡动画. 下面是一个简单示例:快速开始首先, 创建一个 WinForm 项目用于测试, 向主窗体中添加一个按钮, 并为按钮的点击事件添加事件处理器在解决方案管理器中右击项目, 选择 “管理 nuget 程序包”, 然后安原创 2021-06-30 02:45:05 · 774 阅读 · 0 评论 -
[C#] 使用 NullLib.CommandLine 分析命令行字符串并执行与代码中定义的方法
摘要介绍通过命令行字符串来方便快捷的调用 C# 中定义的方法准备添加 nuget 包: NullLib.CommandLine使用方式首先, 在 NullLib.CommandLine 中用于调用方法的最基本类型是 CommandObject, 它包含了方法的各种信息, 例如 MethodInfo, ParameterInfo, 以及属性.然后, 你需要定义一个包含要调用方法的类, 在这个类中, 每一个将被调用的方法都应该有一个 Command 属性, 之后我们将用这个类型实例化一个 Com原创 2021-06-29 21:54:51 · 353 阅读 · 4 评论 -
[C#] 使用 NAudio 实现音频可视化
预览:捕捉声卡输出:实现音频可视化, 第一步就是获得音频采样, 这里我们选择使用计算机正在播放的音频作为采样源进行处理:NAudio 中, 可以借助 WasapiLoopbackCapture 来进行捕捉:WasapiLoopbackCapture cap = new WasapiLoopbackCapture();cap.DataAvailable += (sender, e) => // 录制数据可用时触发此事件, 参数中包含音频数据{ float[] allSam原创 2021-05-09 23:49:18 · 10027 阅读 · 6 评论 -
[随笔] 音频, 采样, 采样率, 样本大小, 样本编码
音波:首先是初中物理知识, 声音是物体的振动造成的, 所以从时间上看, 这个物体的位置不断变动, 下面这个图象, 就是音波了采样:因为计算机无法存储整个音波, 只能存储音波上一个个的点, 而这一个个的点, 就是采样:采样率:采样率就是采样的密集程度, 如果太过密集, 那么占用的存储空间就会大很多, 但如果采样率小了, 那么这些采样与原波形的形状就有所不同了.样本大小:样本大小表示计算机应该用多大的存储空间来存储一个样本, 有 8bit, 16bit, 32bit, 常用的是 16bit原创 2021-05-06 19:54:02 · 1019 阅读 · 0 评论 -
[C#] 计算 MD5 SHA1 SHA256 SHA384 SHA512 CRC32
直接贴代码了, 复制即可用, 源码部分来自网络.如果要计算字符串的 MD5 值, 直接 Encoding.UTF8.GetBytes() 然后就可以了using System;using System.IO;using System.Linq;namespace NullLib.HashCalc{ public class HashHelper { public static string CalcMd5x32(byte[] bytValue)原创 2021-04-18 02:38:55 · 439 阅读 · 0 评论 -
[C#] 关于 Linq 拓展函数对迭代对象进行更改不生效的问题
偶然发现, 在使用 Linq 的 Select 方法时, 如果对被迭代对象进行更改, 那么这个更改是不会生效的原创 2021-04-09 10:09:35 · 248 阅读 · 0 评论 -
[C#] 二进制, 十进制, 十六进制, 进制转换
在源码中:C# 中允许在代码中使用 0x 开头的十六进制数字, 以及 0b 开头的二进制数字来表示一个整数. 下面的语法是合理的.int a = 123;int b = 0xFF;int c = 0b10010;数字转换将一个数字转换为某进制的字符串, 有两种方式:// 第一种: 使用 Convert 类. 可转换为 二进制 八进制 十进制 十六进制Convert.ToString(10, 2); // 二进制, 返回 "1010"Convert.ToString(10, 8);原创 2021-04-06 22:37:59 · 1369 阅读 · 0 评论 -
[PowerShell] 快速入门, 基本语法, 常用类型, 函数, .NET 互操作
PowerShell 快速入门开始之前, 我们认定你已经有一定的编程基础, 熟悉 .NET 中的类型与对象.此文章对于 .NET 开发者来说更简单哦!在 PowerShell 中, 几乎一切都是对象. 与 CMD 有很大不同. PowerShell 是强类型的, 它基于 .NET, 故, PowerShell 可以近乎完美的调用 .NET 的标准库.0. 官方文档既然要学新东西, 肯定要会查阅官方文档才彳亍呀! 本文章参阅官方文档, 并使用更简单的语言讲述给读者, 在每一部分都会有推荐的官方文原创 2021-03-24 15:42:12 · 1086 阅读 · 2 评论 -
[.NET] 拓展库, 开源库, nuget库收集. (长期更新)
如果感兴趣, 可以试试下面的库名称标签描述Newtonsoft.JsonJSON分析, 文本处理非常流行的JSON操作库, 教程也能够轻松在网上找到, 速度也很不错NAudio音频处理, 录音, 播放音频流行而又强大的音频操作库Fody.Costura程序打包仅需安装这个库, 即可直接使所有需要的程序集内嵌入你的程序, 实现单文件程序System.Drawing.Common图像处理你可能会发现 .NET Core 不内置 System.Drawin原创 2021-03-19 12:12:04 · 429 阅读 · 0 评论 -
[笔记] 记录一次该死的 “玄学“ Bug, 赶紧看看避开这个坑!!! .NET Core, Delegate.BeginInvoke, PlatformNotSupportedException
概述:没事闲着别总是玩异步, 否则可能就会像我这样出现线程问题这件事:首先是… 报了一堆 “平台不支持的” 错误.堆栈显示也看不出来是哪里的问题, 但我看到了 Threading 这玩意儿…:最后通过 “死亡断点” 发现是这里出的问题, 这是一个异步操作的回调函数.进一步调试, 发现是这里, 这里又会 Invoke 一个事件:好家伙, 又是一个事件… 然后我看了看订阅了这个事件的地方…乍一看, 没啥毛病! 但问题确实出在这里! (我实在是太菜了)最后… 我思原创 2021-03-09 21:48:03 · 465 阅读 · 0 评论 -
[WPF] Matrix Transform, 矩阵变换. 最最最基础的原理解释.
关于向量:1. 向量的基在计算机科学中, 向量, Vector, 通常这么表示:[xy]\left[\begin{array}{cc}x\\y\end{array}\right][xy]向量有两个 “基”, i‾\overline{i}i, 即 1,0→\overrightarrow{1, 0}1,0, j‾\overline{j}j, 即 0,1→\overrightarrow{0, 1}0,1向量可以看作一组数乘以这些基的结果, 即: v‾=a×i‾+b×j‾\ov原创 2021-03-08 11:59:48 · 1873 阅读 · 1 评论 -
[干货] 一篇文章完全搞懂面向对象基本概念
今天我一个朋友, 突然问我, 在程序入口所用的类中, 为什么字段需要加static…好家伙, 一听就是没懂啥是面向对象! 我也看了网上的一大堆东西, 啊说啥继承, 多态, 反正我是菜鸟的时候是没听懂这些东西, 后来还是我自己摸索出来的 (嘤嘤嘤QAQ)好的, 我们使用 C# 来做演示, 大概了解一下类的最基本概念. 来整一个, 数组拓展.演示代码片:public class ArrayHelper{ public int[] Source; // 字段 public st.原创 2021-03-07 16:15:50 · 258 阅读 · 0 评论 -
[C#] 就让这张图片来揭露你的本性吧! 老绅士.
淦!看到上面那幅图了吗? 放大, 放大, 看到了吗? 说的就是你 (滑稽原创 2021-02-21 23:08:37 · 3156 阅读 · 0 评论 -
[C#] 绘制函数图像. 可拖动, 可缩放, 可调整精度
欸嘿, 这就是程序图了, 通过鼠标拖拽可以移动, 鼠标滚轮可以缩放, 右下角还可以选择要绘制的函数. 项目仓库链接在文章末尾基本原理:Graphics 绘图, 不用我说了吧? 如果你不是很懂, 留言, 我会专门写一篇文章来介绍 Graphics.带入求值, 没啥难的. 线是一个个点连起来的, 也就是:然后, 标尺, 也是一个个线呗, 那个数字的话, 就是这个:填充小三角的话, 就是这个:关于优化:首先是计算问题, 保证仅仅计算需要显示的区域, 区域外的坐标不予以计算, 以节省资源.然.原创 2021-02-19 22:00:53 · 3966 阅读 · 7 评论