写在前面 Composite组合模式属于设计模式中比较热门的一个,相信大家对它一定不像对访问者模式那么陌生,毕竟谁又没有遇到过树形结构呢。不过所谓温故而知新,我们还是从一个例子出发,起底一下这个模式吧。 一个简单例子 设想我们要建立一个公司的人事架构,在一个公司里,我们可以简单地分为两种员工,一种是经理(包括老板),另一种是基层员工,经理可以有下属,而普通 ......
385
0
0
2023-01-08
前言 Visitor模式在日常工作中出场比较少,如果统计大家不熟悉的模式,那么它榜上有名的可能性非常大。使用频率少,再加上很多文章提到Visitor模式都着重于它克服语言单分派的特点上面,而对何时应该使用这个模式及这个模式是怎么一点点演进出来的提之甚少,造成很多人对这个模式有种雾里看花的感觉,今天跟着老胡,我们一起来一点点揭开它的面纱吧。 模式演进 举个例 ......
357
0
0
2023-01-08
01—死锁的原理线程死锁是指由于两个或者多个线程互相持有对方所需要的资源,并且互相等待对方释放资源,导致这些线程都处于等待状态,无法继续执行。如果线程都不主动释放所占有的资源,将产生死锁。如果死锁发生在UI线程,则会导致界面停止响应。死锁的条件:1.互斥条件:线程对于所分配到的资源具有排它性,即一个资源只能被一个线程占用,直到被该线程释放2.请求和保持条件: ......
320
0
0
2023-01-07
C# 在自定义的控制台输出重定向类中整合调用方信息目录C# 在自定义的控制台输出重定向类中整合调用方信息一、前言二、输出重定向基础版三、输出重定向进阶版(传递调用方信息)四、后记及资源独立观察员 2021 年 1 月 6 日一、前言众所周知,在 .NET 的控制台应用程序(就是那种小黑框程序)中输出信息,使用的是控制台输出方法 Console.Write ( ......
317
0
0
2023-01-07
利用 C# 中的 FileSystemWatcher 制作一个文件夹监控小工具独立观察员 2020 年 12 月 26 日简述了使用 FileSystemWatcher 进行文件系统变更监测的方法,本人受此启发,决定制作一个文件夹内变动监控的小工具,当作练手和自用。目前该工具已制作完成,故发文分享给大家。功能比较简单,运行程序后,点击 “选择文件夹” 按钮选 ......
392
0
0
2023-01-07
时间如流水,只能流去不流回! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform、WPF、ASP.NET Core等,亦有C++桌面相关的Qt Quick和Qt Widgets等,只分享自己熟悉的、自己会的。今天介绍一个开源的C# WPF开源控件库,非常漂亮,重点是开源哦WPF做桌面开发 ......
344
0
0
2023-01-07
要理解 C# 中的 volatile 关键字,就要先知道编译器背后的一个基本优化原理。比如对于下面这段代码:public class Example { public int x; public void DoWork() { x = 5; var y = x + 10; ......
390
0
0
2023-01-07
这节来讲一下C#中的匿名类型。匿名类在C#中,我们可以不去显示的声明一个类,而是通过匿名类去临时声明一个类结构去帮助我们去完成一些功能。声明一个匿名类,我们可以像下面这样做:var Anonymous=new {name="charles",year=18};//声明匿名类对象 需要注意的是,匿名类成员只能声明公共的只读属性,不能在匿名类中声明方法,因此匿 ......
516
0
0
2022-12-31
采用C#+SqlServer+CS架构实现的学生成绩管理系统,学生成绩录入系统,系统采用多层C/S软件架构,采用C#编程语言开发技术实现界面窗口版本的学生管理系统程序界面,实现CS架构窗口事件监听,完成学生成绩创建,编辑,删除等。原文地址一、程序设计本次基于C#+SqlServer+CS架构实现的学生成绩管理系统,学生成绩录入系统,主要内容涉及:主要功能模块 ......
366
0
0
2022-12-26
本基于C#+SqlServer+CS架构实现的在线五子棋对战平台,五子棋游戏程序,系统采用多层C/S软件架构,采用C#编程语言开发技术实现界面窗口版本的五子棋程序界面,实现CS架构窗口事件监听,完成五子棋双人在线对战等。五子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。这里设计和实现了一个人机对下的五子棋程序,采用了博弈树的方法 ......
360
0
0
2022-12-26
C#运算符执行顺序对照表:在线查看C#运算符执行优先级别 窍门: Ctrl+F 快速查找C#运算符优先级,是描述在计算机计算表达式时执行运算的先后顺序。 先执行具有较高优先级的运算,然后执行较低优先级的运算。 例如,我们常说的先执行相乘和除,再执行加减运算。优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[整型表达式]左到右()圆括号 ......
376
0
0
2022-12-24
到目前为止,已经完成了服务端框架的底层功能,那么现在测试的方法仅仅是通过在main函数中写一些测试的一些代码,并没有和Unity真正的结合起来,那么接下来就和Unity结合一下,真正的去做一个完整的登陆注册流程.既然是登录和注册,那么肯定有登录和注册这2个协议:我们新建一个LoginMsg的脚本:using System; using  ......
451
0
0
2022-12-20
游戏服务器并不是什么高大上的东西,说的简单点,就是个消息转发+数据存储的一个程序.下图展示的就是一个最简单的单进程服务器示意图:服务器模块的划分:网络底层,它指的是对于数据的自动处理,比如string->byte这样的,还有粘包和分包的处理,解析协议名,解析协议等.消息处理, 比如网络底层解析出了网络底层的消息.然后消息处理模块会很好的解析到 ......
482
0
0
2022-12-20
在 C# 里面,所有的对象都继承 Object 类型,此类型有开放 GetHashCode 用于给开发者重写。此 GetHashCode 方法推荐是在重写 Equals 方法时也同时进行重写,要求两个对象在 Equals 返回相等时,两个对象的 GetHashCode 返回值也相等。反过来则不然,允许有两个不相等的对象的 GetHashCode 是相等的 在 ......
379
0
0
2022-11-11
一、普通变量在C#中,通常,我们要得到一个变量类型,使用GetType()方法。比如:int m = 0; Type type = m.GetType(); 是不是感觉很简单。二、如何判断动态类型的实际数据类型?动态类型的关键字是dynamic,怎么取它的类型呢?通过GetType()也一样可以得到的。比如:如上图,我们通过GetType()方法,还是可 ......
634
0
0
2022-11-09