202011-29 C# Random类的正确应用方法 Random类介绍Random类一个用于产生伪随机数字的类。这里的伪随机表示有随机性但是可以基于算法模拟出随机规律。Random类的构造方式有两种。Randomr=newRandom()。会以当前系统时间作为默认种子构建一个随机序列Randomr=newRandom(unchecked((int)DateTime.Now.Ticks));。自定义一个种子,通常会使用时间Ticks。随机性保证由于Random的伪随机性,所以如果多个Random随机序列生成的时间间隔很短(官方说法15ms内),... 继续阅读 >
202011-25 c# 如何实现图片压缩 一般在web应用中,对客户端提交上来的图片肯定需要进行压缩的。尤其是比较大的图片,如果不经过压缩会导致页面变的很大,打开速度比较慢,当然了如果是需要高质量的图片也得需要生产缩略图。一般在web应用中,对客户端提交上来的图片肯定需要进行压缩的。尤其是比较大的图片,如果不经过压缩会导致页面变的很大,打开速度比较慢,当然了如果是需要高质量的图片也得需要生产缩略图。下面贴出我自己琢磨的图片压缩算法,首先这个是未... 继续阅读 >
202011-25 c# 播放声音的四种方法 第一种是利用DirectX1.安装了DirectXSDK(有9个DLL文件)。这里我们只用到MicroSoft.DirectX.dll和Microsoft.Directx.DirectSound.dll2.引入DirectX的DLL文件的名字空间:usingMicrosoft.DirectX;usingMicrosoft.DirectX.DirectSound;3.建立设备Devicedv=newDevice();4.设置CooperativeLevel。因为windows是多任务的系统,设备不是独占的SecondaryBufferbuf=newSecondaryBuffer(@"snd.wav",dv);5.开辟缓冲区Secondar... 继续阅读 >
202011-25 C#实现窗体抖动的两种方法 本文实例为大家分享了C#实现窗体抖动的具体代码,供大家参考,具体内容如下原理:围绕中心点运动一圈方法一:通过线程实现需求:需要usingSystem.Threading;命名空间和button按钮以及for循环具体代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;using... 继续阅读 >
202011-25 C#实现QQ窗口抖动效果 本文实例为大家分享了C#实现QQ窗口抖动效果的具体代码,供大家参考,具体内容如下实现界面:1.两个textbook和两个Button2.NotifyIcon控件是实现托盘实现代码:privatevoidForm1_Load(objectsender,EventArgse){this.Text="聊天窗口";button1.Text="抖动";button2.Text="发送";this.AutoSizeMode=AutoSizeMode.GrowAndShrink;textBox1.ReadOnly=true;//获取焦点在textBox2上面用来发送消息textBox2... 继续阅读 >
202011-25 C#实现简单的窗口抖动 本文实例为大家分享了C#实现简单的窗口抖动的具体代码,供大家参考,具体内容如下属性赋值:1、查看属性的类型,如果是C#中预定义的15种属性类型,直接赋值(1)查看属性类型:鼠标悬停在属性单词上;(2)C#中预定义的属性类型2、排除第一种,符号后面试着敲空格,如果出现智能提示直接敲小数点,选择一个合适的选项分号结束3、遇到特殊类型Color,等号后面直接使用属性类型单词点,选择一个分号结束简单的窗口抖动案例项目分析1... 继续阅读 >
202011-25 c# 修改windows中账户的用户名和密码 在C#中,我们可以使用WMI类中的Win32_Service或者Win32API中的函数ChangeServiceConfig来修改本地或远程计算机Windows服务登录身份(账户)的用户名和密码。1、使用Win32API修改服务登录身份信息:使用Win32API中的函数 ChangeServiceConfig 更改的是服务控制管理器数据库中指定服务的配置信息。privateconstintSC_MANAGER_ALL_ACCESS=0x000F003F;privateconstuintSERVICE_NO_CHANGE=0xfff... 继续阅读 >
202011-25 C# 9.0新特性——扩展方法GetEnumerator支持foreach循环 1.介绍我们知道,我们要使一个类型支持foreach循环,就需要这个类型满足下面条件之一:该类型实例如果实现了下列接口中的其中之一:System.Collections.IEnumerableSystem.Collections.Generic.IEnumerable<T>System.Collections.Generic.IAsyncEnumerable<T>该类型中有公开的无参GetEnumerator()方法,且其返回值类型必须是类,结构或者接口,同时返回值类型具有公共Current属性和公共无参数且返回类型为Boolean的Move... 继续阅读 >
202011-25 C# 9.0新特性——只初始化设置器 自C#1.0版本以来,我们要定义一个不可变数据类型的基本做法就是:先声明字段为readonly,再声明只包含get访问器的属性。例子如下:1、背景与动机自C#1.0版本以来,我们要定义一个不可变数据类型的基本做法就是:先声明字段为readonly,再声明只包含get访问器的属性。例子如下:structPoint{publicintX{get;}publicintY{get;}publicPoint(intx,inty){this.X=x;this.Y=y;}}这种方式虽然很有效... 继续阅读 >
202011-25 C# 9.0新特性——只初始化设置器 自C#1.0版本以来,我们要定义一个不可变数据类型的基本做法就是:先声明字段为readonly,再声明只包含get访问器的属性。例子如下:1、背景与动机自C#1.0版本以来,我们要定义一个不可变数据类型的基本做法就是:先声明字段为readonly,再声明只包含get访问器的属性。例子如下:structPoint{publicintX{get;}publicintY{get;}publicPoint(intx,inty){this.X=x;this.Y=y;}}这种方式虽然很有效... 继续阅读 >
202011-25 C#实现俄罗斯方块 本文实例为大家分享了C#实现俄罗斯方块的具体代码,供大家参考,具体内容如下1.调色板代码namespaceTetris{classPalette{privateint_width=15;//画板宽度privateint_height=25;//画板高度privateColor[,]coorArr;//固定砖块数组privateColordisapperColor;//背景色privateGraphicsgpPalette;//砖块活动画板privateGraphicsgpReady;//下一个砖块样式画板privateBlockGroupbGroup;//砖块生产机... 继续阅读 >
202011-22 c# 线程安全队列的用法原理及使用示例 什么是线程安全?答:线程安全是多线程编程时的计算机程序代码中的一个概念。在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。在多线程并行的情况下会出现共享数据会线程间读取与写入不一直的情况,为了解决这种情况,通常会使用锁来解决,也就是将并行改为串行。但是在使用穿行违背了使用多线程并发的初衷,这种情况下我们可以考虑采用... 继续阅读 >
202011-22 c# 实现KMP算法的示例代码 KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。KMP算法的时间复杂度O(m+n)。实现方式就不再这里献丑了,网上很多讲解,此处只是记录下c#实现的代码。publiccl... 继续阅读 >
202011-22 C# WinForm调用Shell_NotifyIcon的示例代码 publicclassInnerClass:Form{privateShell_NotifyIconExservicesClass=null;//接受主CLASS的实例句柄internalInnerClass(Shell_NotifyIconEx_servicesClass){servicesClass=_servicesClass;}privateconstintWM_LBUTTONDOWN=0x0201;//左键privateconstintWM_RBUTTONDOWN=0x204;//右键privateconstintWM_MBUTTONDOWN=0x207;//中键[DllImport("user32.dll",EntryPoint="Tr... 继续阅读 >
202011-22 c# 剔除sql语句'尾巴'的五种方法 一:背景1.讲故事这几天都在修复bug真的太忙了,期间也遇到了一个挺有趣bug,和大家分享一下,这是一块sql挺复杂的报表相关业务,不知道哪一位大佬在错综复杂的嵌套+平行if判断中sql拼接在某些UI组合下出问题了,最终的sql架构类似这样的。varsql="select1unionallselect2unionallselect3unionall";这种sql到数据库去肯定是报错的,有些朋友可能想说这还不简单,在相关的if判断中不要追加这个unionall就... 继续阅读 >
202011-22 详解 c# 克隆 克隆方法是原型设计模式中必须使用的方式,它将返回一个与当前对象数据一致的对象。正如其名,犹如一个模子雕刻而出。克隆类型分为两种:浅克隆、深克隆。1、浅克隆浅克隆方式是最简单、最直接的方式。只需要类实现接口ICloneable(在命名空间System.Runtime.InteropServices下)的Clone方法,在方法中使用加入对当前类的MemberwiseClone()方法即可。在浅克隆中,如果原型对象的成员变量是值类型,将复制一份给克隆对象;如果原型... 继续阅读 >