
C#
文章平均质量分 89
熊思宇
游戏程序员的进阶之旅,不断探索、创新,始终坚持对技术的热爱与执着
展开
-
NLua 文档
NLua 允许在 UWP、Windows、Linux、Mac、iOS、Android 上使用 C# 中的 Lua。NLua 运行在 KeraLua 绑定层之上,默认情况下它使用 ASCII 编码来处理字符串。如果你希望使用 UTF-8 编码,只需将 Lua.State.Encoding 属性设置为 Encoding.UTF8 即可原创 2025-03-17 09:33:48 · 1398 阅读 · 0 评论 -
MoonSharp 文档五
MoonSharp 兼容所有 CLR 语言(C#、VB.NET、C++/CLI、F#、Boo 等),理论上也支持DLR语言(如 IronPython、IronRuby)。但由于维护多语言示例的工作量较大,后续教程仅提供 C# 示例(本入门页含 VB.NET)。大多数教程的代码可在 GitHub 的示例项目中找到。原创 2025-03-10 23:05:21 · 1033 阅读 · 0 评论 -
MoonSharp 文档四
MoonSharp 兼容所有 CLR 语言(C#、VB.NET、C++/CLI、F#、Boo 等),理论上也支持DLR语言(如 IronPython、IronRuby)。但由于维护多语言示例的工作量较大,后续教程仅提供 C# 示例(本入门页含 VB.NET)。大多数教程的代码可在 GitHub 的示例项目中找到。原创 2025-03-10 16:02:23 · 964 阅读 · 0 评论 -
MoonSharp 文档三
MoonSharp 兼容所有 CLR 语言(C#、VB.NET、C++/CLI、F#、Boo 等),理论上也支持DLR语言(如 IronPython、IronRuby)。但由于维护多语言示例的工作量较大,后续教程仅提供 C# 示例(本入门页含 VB.NET)。大多数教程的代码可在 GitHub 的示例项目中找到。原创 2025-03-10 11:27:30 · 679 阅读 · 0 评论 -
MoonSharp 文档二
MoonSharp 兼容所有 CLR 语言(C#、VB.NET、C++/CLI、F#、Boo 等),理论上也支持DLR语言(如 IronPython、IronRuby)。但由于维护多语言示例的工作量较大,后续教程仅提供 C# 示例(本入门页含 VB.NET)。大多数教程的代码可在 GitHub 的示例项目中找到。原创 2025-03-08 15:43:01 · 878 阅读 · 0 评论 -
MoonSharp 文档一
MoonSharp 兼容所有 CLR 语言(C#、VB.NET、C++/CLI、F#、Boo 等),理论上也支持DLR语言(如 IronPython、IronRuby)。但由于维护多语言示例的工作量较大,后续教程仅提供 C# 示例(本入门页含 VB.NET)。将 interpreter/net35 目录下的 MoonSharp.Interpreter.dll 放入 Assets/Plugins。现在,你可以继续探索其他教程了!菜单栏选择“项目”->“添加NuGet包”->搜索“MoonSharp”并安装。原创 2025-03-08 14:45:06 · 1289 阅读 · 0 评论 -
C# Winform 软件版本号自动增加
在平时的开发中,版本号的是常用的功能,除非你的程序不经常更新,光看软件的界面不可能就知道代码具体改了什么。在 C# 的开发中,很多程序员依然是手动的去改版本号,但非常的麻烦,每次生成前必须去 AssemblyInfo.cs 这个类中修改,但不排除部分公司压根不用软件版本号这个功能,我以前就遇到过,虽然他们不用,但也不影响软件的正常运行,不管怎样,版本号的管理加上去还是好的。版本号主要分为4个部分,如 1.0.0.0,分别是 主版本.次版本.构建号.修订号。我想定义的规则:旧版本递增后解释。原创 2025-02-15 15:43:48 · 1303 阅读 · 1 评论 -
C# 模式匹配(一)
模式匹配是 C# 中的一种强大功能,用于简化类型检查、条件判断和数据结构解析的代码编写。自 C# 7.0 引入以来,模式匹配的功能不断扩展,已经成为语言核心特性之一。它通过直观的语法将复杂的逻辑处理浓缩为清晰易读的表达式和结构,从而提高代码的可维护性和开发效率。模式匹配的核心思想是根据值或数据结构的特性,直接匹配特定的模式并对其进行处理。它支持的功能包括:1.类型模式检查值是否为某种特定类型,并将其转换为该类型,以便进一步使用。这是最早引入的模式匹配形式,用于减少类型检查和类型转换的冗余代码。原创 2024-12-26 19:01:58 · 1016 阅读 · 0 评论 -
C# 动态编译
CSharpCodeProvider 是 .NET 提供的一个强大工具,它允许开发人员在应用程序运行时动态地生成和执行 C# 代码。这一特性为后端开发带来了前所未有的灵活性和动态性,特别是在处理那些需要高度定制化或难以在编译时确定逻辑的场景时,尤为有用。原创 2024-09-19 15:03:45 · 1562 阅读 · 0 评论 -
C# 离线激活码的实现方式
离线激活码是一种在软件、游戏、应用程序或其他数字产品领域中常用的授权方式,旨在确保产品的合法使用并维护开发者的权益。当用户购买或获得这些产品的使用权后,开发者会提供一个唯一的、一次性的激活码给用户。与在线激活不同,离线激活码允许用户在没有网络连接的情况下完成产品的激活过程,这对于网络环境不稳定或处于无网络环境的用户尤为便利。原创 2024-09-18 17:35:04 · 1493 阅读 · 0 评论 -
C# 三种定时器的用法
System.Timers.Timer类定义了一个计时器,该计时器按固定间隔触发事件。它主要用于多线程环境,特别是在基于服务器的组件或服务组件中。此类没有用户界面,在运行时不可见,特别适用于后台任务处理。原创 2024-08-26 15:14:06 · 7460 阅读 · 0 评论 -
WPF 动态添加组件,并计算坐标,让组件按列表排列
一、前言在软件开发中,经常有动态添加控件的需求,并且让控件自动排序,当超过容器的宽度时,自动换行,在Winfrom,Unity 中都有自动布局的组件,WPF应该也有,只是我刚初学,不太清楚。二、算法提问:在一个WPF容器中添加36个控件,每排12个,请问第4个控件和第16个控件,在容器的第几排和第几个位置?在编程中遍历数组的习惯性写法,从0开始计数,3则代表4,求余数和它的商就能计算出它在那一排,那一列了。下面开始求余数,图中这个是网页版的在线求余数计算器,用搜索引擎搜一下就出来..原创 2022-03-30 16:39:05 · 2141 阅读 · 0 评论 -
WPF LiveCharts动态曲线(折线图)
在超过图表的最大值后,X轴会自动向右边移动LiveCharts是一个比较漂亮的WPF图表控件,在数据发生变化后,还可以设置相对于的动画效果,但也有自己的缺点,比如数据量过大,可能会非常的卡,有一次,我在写柱状图时,将几个柱子的值设置成15000,结果整整卡了几十秒,在使用时还是需要注意的。安装 LiveChart:在NuGet中直接搜索 LiveChart,选择 LiveCharts.Wpf在使用的界面当中引用LiveChart.Wpf的类库。原创 2022-05-05 18:03:34 · 23002 阅读 · 20 评论 -
WPF 常用功能整合
引入LiveCharts插件,在NuGet平台自己装就好了,我的版本是0.9.7,图片使用的编辑器是VisualStudio2013。有web前端开发经验的都知道,在做界面之前,通常会把界面分为几大的模块,然后再细化模块内部的界面布局,所以,学习WPF之前,也必须先弄懂这个。新建一个项目LiveChartBindingDemo,用这个名字,下面的代码你就可以完整的直接复制粘贴就好了,不必再修改。其实这里用普通的界面也是可以的,只是要将窗体的最小化,最大化和关闭按钮去掉,如下。......原创 2022-07-26 14:09:52 · 1422 阅读 · 0 评论 -
C# 简单的本地数据存储系统
在上位机开发中,经常会有数据需要长期保存,比如常见的配置文件,即使软件关闭,下次重新打开也不会受到影响,但也有些数据,不适合写到配置文件中,比如软件的操作记录,特殊的一些全局变量等,因此我写了一个简单的本地存储系统,将数据写到 Json 文件中,并让其和缓存中的变量保持一致。我们需要实现下面的功能:1.json 文件如果不存在,自动创建2.对应路径文件夹如果不存在,自动创建3.软件运行后,json 文件的数据要自动加载到变量中4.软件中进行了添加,删除,任何数据改变都要同步到 json 文件中。原创 2024-08-06 11:37:25 · 1504 阅读 · 0 评论 -
C# Task.WaitAll 的用法
Task.WaitAll 是 C# 中用于并行编程的一个的方法,它属于 System.Threading.Tasks 命名空间。主要作用是等待提供的所有 Task 对象完成其执行过程。通过使用 Task.WaitAll,开发者可以确保一组并行执行的任务全部完成后,再继续执行后续的代码。这对于需要等待多个异步操作同时完成以继续执行其他操作的场景非常有用。Task.WaitAll 方法有多个重载版本,以适应不同的需求。最基本的版本接收一个 Task 对象的数组作为参数,并等待这个数组中的所有任务完成。原创 2024-07-26 15:07:33 · 2005 阅读 · 0 评论 -
C# yaml 配置文件的用法(二)
YAML(YAML Ain't Markup Language)是一种数据序列化标准,广泛用于配置文件、数据交换和存储。YAML的设计目标是易于阅读和编写,同时也易于机器解析和生成。:yaml 使用缩进和简洁的语法来表示数据结构,这使得它比 XML 或 Json 等格式更易于阅读和编写。:yaml 支持多种数据类型,包括标量(如字符串、整数、浮点数)、序列(列表)、映射(字典)以及复杂的数据结构。原创 2024-07-23 10:36:36 · 1302 阅读 · 1 评论 -
C# yaml 配置文件的用法(一)
YAML的设计目标是易于阅读和编写,同时也易于机器解析和生成。3.在 key 的值前边必须有空格,否则读取时会报错,比如:name: zhansan,而不是 name:zhangsan,键值对的冒号后面至少有一个空格。5. YAML兼容Json的语法,这意味着你在 yaml 文件也可以使用 json 语法,同样的,C# 插件 YamlDotNet 也支持 Json 的读写。YAML 在读取性能上不如 Json,但在需要手写配置文件的时候,YAML 要比 Json 方便不少,阅读起来也更加容易。原创 2024-07-22 19:06:27 · 1467 阅读 · 0 评论 -
C# 程序集的加载和卸载
AppDomain(应用程序域)在C#和.NET框架中是一个非常重要的概念,它提供了一种隔离应用程序中运行的不同部分的方式。提到程序集的加载和卸载,不得不提到 AppDomain 对应的概念,AppDomain 在使用上,.NetFramework 和 .Net 、 .Net Core 用法也不太一样,下面是 AppDomain 的一些简介。虽然AppDomain本身不直接提供并行执行的能力,但通过使用多个AppDomain,可以并行地运行应用程序的不同部分,从而利用多核处理器的优势。原创 2024-07-15 15:15:38 · 1706 阅读 · 0 评论 -
C# 使用线程调用方法的便捷方式
在使用线程代码时,因为用到委托的方式,所以写起来不是特别方便,当前文章就是为了简化异步操作的执行。原创 2024-07-09 08:31:48 · 356 阅读 · 0 评论 -
C# 时间计算(二)
在 C# 中,DateTime 用于处理日期和时间的内置类,其值范围为 00:00:00 (午夜) , 0001年1月1日,安诺·多米尼 (公历) 年12月31日晚上11:59:59 (公历 )。时间值以 100 纳秒为单位进行测量,称为刻度。特定日期是自 A.0001 年 1 月 1 日午夜 12:00 以来的时钟周期数, (日历中的 GregorianCalendar C.E.)。该数字不包括按闰秒添加的刻度。原创 2023-11-24 21:00:42 · 4497 阅读 · 0 评论 -
C# Windows 服务程序的开发
安装程序将服务的可执行文件注册到系统服务管理器中,并提供安装、卸载和配置服务的功能。在这个类中,需要重写 OnStart 和 OnStop 方法,分别用于处理服务的启动和停止逻辑。通过使用 .NET 提供的相关类和方法,可以轻松地创建、安装、启动和停止 Windows 服务。Windows 服务是一种特殊类型的应用程序,它可以在操作系统启动时自动启动,并在后台持续运行,而无需用户交互。这里重写了一个 OnStart 和 OnStop 方法,意思是程序启动的时候执行一次,和程序关闭的时候执行一次。原创 2023-12-23 16:32:45 · 4576 阅读 · 2 评论 -
C# 时间计算(一)
在 C# 中,DateTime 用于处理日期和时间的内置类,其值范围为 00:00:00 (午夜) , 0001年1月1日,安诺·多米尼 (公历) 年12月31日晚上11:59:59 (公历 )。时间值以 100 纳秒为单位进行测量,称为刻度。特定日期是自 A.0001 年 1 月 1 日午夜 12:00 以来的时钟周期数, (日历中的 GregorianCalendar C.E.)。该数字不包括按闰秒添加的刻度。原创 2023-11-24 16:53:05 · 3115 阅读 · 0 评论 -
C# 读写ini文件
ini 文件是Initialization File的缩写,即初始化文件,是 windows 的系统配置文件所采用的存储格式,统管 windows 的各项配置,一般用户就用 windows 提供的各项图形化管理界面就可实现相同的配置了。但在某些情况,还是要直接编辑 .ini 才方便,一般只有很熟悉 windows 才能去直接编辑。开始时用于 Win3.X下面,Win95 用注册表代替,以及后面的内容表示一个节,相当于注册表中的键。原创 2021-12-02 14:08:58 · 8762 阅读 · 0 评论 -
C# XmlHelper
一、需求对于小量数据在本地存储,可能会用到 xml 文件,下面的 xmlhelper.cs 代码出处好像是微软的,不太清楚,百度搜的很多帖子只是贴出了 xmlhelper 代码,千篇一律,全是贴了代码就什么都没有了,在此我将 xmlhelper 常用的 增、删、改、查 做一个教程。二、XmlHelperusing System;using System.Collections;using System.Data;using System.IO;using System.Te....原创 2021-03-01 16:28:42 · 3655 阅读 · 4 评论 -
C# XmlHelper 精简版
在之前,我也写过XML相关的帖子,比如使用微软自带的System.Xml 如何去创建文件和节点等,还有一个封装好的 XmlHelper,有兴趣的可以去看看。C# 创建并写入XML文件。原创 2022-03-18 17:32:15 · 1746 阅读 · 0 评论 -
C# 读写自定义的Config文件
在软件开发中,经常用到设置这样的功能,如果设置中的功能不多,用 Json、XML 这样的数据结构存储非常的麻烦,一个字段的读写,就要写大量的代码,例如 Json 要写实体类才能进行读写,假设其中一个功能不用,这个字段所有相关的引用都要进行删除和修改,使用 ini 这样的方式,现在几乎没几个人用了,于是我决定用微软自带的Config文件方式。于是搜索了一下自定义Config文件,发现网上大部分帖子都是读写 “软件名.exe.config” 文件,没什么用,和我设计需求不符合,于是我自己写了一个。...原创 2022-06-30 22:59:55 · 7695 阅读 · 2 评论 -
C# IO 相关功能整合
IO 相关功能整合原创 2023-07-28 16:15:14 · 790 阅读 · 0 评论 -
C# 线程基础(二)
1.lock 只对多线程有效,对单线程无效,单线程 lock 不会导致死锁。2.不推荐使用 lock(this),因为在它外部也可以访问它。3.不应该使用 lock(string(类型)),因为 string 在内存分配上是重用的,可能会导致冲突。4.lock 中包含的代码最好不要太多,因为在这里是单线程运行的。5. .net 提供了一些线程安全的集合类,使用这些集合不需要用到 lock。6.在可以使用数据分拆的方法来使用多线程时,最好使用数据分拆而不使用 lock。原创 2023-06-26 16:07:02 · 728 阅读 · 0 评论 -
C# List 文档(七)
表示可通过索引访问的对象的强类型列表。 提供用于对列表进行搜索、排序和操作的方法,List是一个动态数组,它可以存储任意类型的对象,并且可以根据需要自动调整大小。原创 2023-07-21 14:14:51 · 916 阅读 · 2 评论 -
C# List 文档(六)
表示可通过索引访问的对象的强类型列表。 提供用于对列表进行搜索、排序和操作的方法,List是一个动态数组,它可以存储任意类型的对象,并且可以根据需要自动调整大小。原创 2023-07-21 10:00:21 · 591 阅读 · 0 评论 -
C# List 文档(五)
表示可通过索引访问的对象的强类型列表。 提供用于对列表进行搜索、排序和操作的方法,List是一个动态数组,它可以存储任意类型的对象,并且可以根据需要自动调整大小。原创 2023-07-21 09:54:38 · 1017 阅读 · 0 评论 -
C# List 文档(四)
表示可通过索引访问的对象的强类型列表。 提供用于对列表进行搜索、排序和操作的方法,List是一个动态数组,它可以存储任意类型的对象,并且可以根据需要自动调整大小。原创 2023-07-21 09:52:30 · 576 阅读 · 0 评论 -
C# List 文档(三)
表示可通过索引访问的对象的强类型列表。 提供用于对列表进行搜索、排序和操作的方法,List是一个动态数组,它可以存储任意类型的对象,并且可以根据需要自动调整大小。原创 2023-07-21 09:50:55 · 1229 阅读 · 0 评论 -
C# List 文档(二)
表示可通过索引访问的对象的强类型列表。 提供用于对列表进行搜索、排序和操作的方法,List是一个动态数组,它可以存储任意类型的对象,并且可以根据需要自动调整大小。原创 2023-07-21 09:45:42 · 1135 阅读 · 0 评论 -
C# List 文档(一)
表示可通过索引访问的对象的强类型列表。 提供用于对列表进行搜索、排序和操作的方法,List是一个动态数组,它可以存储任意类型的对象,并且可以根据需要自动调整大小。原创 2023-07-21 09:37:31 · 1606 阅读 · 0 评论 -
C# Linq 文档(三)
语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。数据查询历来都表示为简单的字符串,没有编译时类型检查或 IntelliSense 支持。此外,需要针对每种类型的数据源了解不同的查询语言:SQL 数据库、XML 文档、各种 Web 服务等。借助 LINQ,查询成为了最高级的语言构造,就像类、方法和事件一样。对于编写查询的开发者来说,LINQ 最明显的“语言集成”部分就是查询表达式。查询表达式采用声明性查询语法编写而成。原创 2023-07-14 12:12:20 · 2384 阅读 · 0 评论 -
C# Linq 文档(二)
语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。数据查询历来都表示为简单的字符串,没有编译时类型检查或 IntelliSense 支持。此外,需要针对每种类型的数据源了解不同的查询语言:SQL 数据库、XML 文档、各种 Web 服务等。借助 LINQ,查询成为了最高级的语言构造,就像类、方法和事件一样。对于编写查询的开发者来说,LINQ 最明显的“语言集成”部分就是查询表达式。查询表达式采用声明性查询语法编写而成。原创 2023-07-13 17:28:39 · 1569 阅读 · 0 评论 -
C# Linq 文档(四)
语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。数据查询历来都表示为简单的字符串,没有编译时类型检查或 IntelliSense 支持。此外,需要针对每种类型的数据源了解不同的查询语言:SQL 数据库、XML 文档、各种 Web 服务等。借助 LINQ,查询成为了最高级的语言构造,就像类、方法和事件一样。对于编写查询的开发者来说,LINQ 最明显的“语言集成”部分就是查询表达式。查询表达式采用声明性查询语法编写而成。原创 2023-07-14 12:13:02 · 2343 阅读 · 0 评论 -
C# Linq 文档(一)
语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。数据查询历来都表示为简单的字符串,没有编译时类型检查或 IntelliSense 支持。此外,需要针对每种类型的数据源了解不同的查询语言:SQL 数据库、XML 文档、各种 Web 服务等。借助 LINQ,查询成为了最高级的语言构造,就像类、方法和事件一样。对于编写查询的开发者来说,LINQ 最明显的“语言集成”部分就是查询表达式。查询表达式采用声明性查询语法编写而成。原创 2023-07-13 17:16:01 · 2006 阅读 · 1 评论