- 博客(38)
- 收藏
- 关注
原创 C# 线程安全集合类
本文章仅为个人理解,如有错误请指正。从.Net 4.0框架开始,在System.Collections.Concurrent命名空间下,增加了用于多线程协同的并发集合类(线程安全集合)。线程安全集合:就是当多线程访问时,采用了加锁的机制;即当一个线程访问集合时,会对这个集合进行保护,其他线程不能对其访问,直到该线程操作完集合之后,其他线程才可以使用。防止出现数据不一致或者数据被污染的情...
2019-07-05 11:56:01
6093
原创 C# Timer详解
本文仅为个人理解,如有错误请指正。在C#中Timer类的定义有四个:System.Threading.Timer System.Windows.Forms.Timer:仅在.NetFramework中 System.Timers.Timer System.Web.UI.Timer:仅在.Net Framework中System.Windows.Forms.Timer定时器,只能...
2019-06-27 10:30:10
6911
原创 C# 数据流详解(FileStream、MemoryStream、NetworkStream等类)
本文仅为个人理解,如有错误请指正。本文章内容主要为数据流及相关辅助类:流(Stream)、文件流(FileStream)、内存流(MemoryStream)、网络流(NetworkStream)、加密流(CryptoStream)以及文本读写的StreamReader、StreamWriter、用于二进制读写的BinaryReader和BinaryWriter类等。对FileStrea...
2019-06-18 20:10:51
10349
2
原创 C# volatile关键字
本文仅为个人参考众多文章后的理解,如有错误请指正,红色内容必看。volatile使用: private volatile int intValue; private volatile List<string> strValues; private volatile FormWindowState style; private volatile IntPtr mai...
2019-06-13 08:23:45
2455
原创 C# dynamic、var、object关键字说明
本文仅为个人理解,如有错误请指正。var:实际上编译器抛给我们的语法糖,一旦被编译,编译器就会自动匹配var变量的实际类型,并用实际类型来替换该变量的声明,等同于我们在编码时使用了实际类型声明,使用var声明的变量,赋值必须与声明时候的类型一致。dynamic:Net 4.0中新增功能 动态语言运行时,在运行时确定其类型,被编译后是一个Object类型,编译器编译时不会对dynamic进行...
2019-06-11 17:52:07
1452
原创 C# 应用程序开启自动启动
本文仅为个人理解,如有错误请指正。 private void checkBox1_CheckedChanged(object sender, EventArgs e) { if (checkBox1.Checked) //设置开机自启动 { MessageBox.Show ("设置开机自启动,需要修改注册表","提示"); //获取应用程序可执行文件的路径,包括...
2019-06-11 17:23:36
1336
原创 C# Process类详解
本文仅为个人理解,如有错误请指正,文本进队Process中属性和方法进行解释和说明,红色字体是我总结的注意点。进程:进程是操作系统级别的一个基本概念,操作系统就将某个程序加载到内存中时,既包含该程序所需要的资源,同时还对这些资源进行基本的内存边界管理。Process类:负责启动和停止本机进程,获取或设置进程优先级,确定进程是否响应,是否已经退出,以及获取系统正在运行的所有进行列表和...
2019-06-11 17:11:59
25778
原创 C# RabbitMQ使用
本文章仅为个人理解,如有错误请指正。RabbitMQ安装、说明、常用命令:https://blog.csdn.net/kang_xuan/article/details/90718878RabbitMQ API:Nuget UI:查找 RabbitMQ.ClientNuget CLI: Install-Package RabbitMQ.Client -Version 5.1....
2019-06-04 18:10:31
1588
原创 RabbitMQ安装、说明、常用命令
本文仅为个人理解,如有错误请指正,会有另一篇文章作为C# 使用RabbitMQ文章,包含各种五种RabbitMQ工作模式Demo。RabbitMQ简介RabbitMQ是实现了高级消息队列协议(AMQP)的开源代理软件(也称为面向消息的中间件),RabbitMQ服务器是用Erlang语言编写,所有主要的编程语言均有与代理接口通信的客户端库。AMQP协议Advanced Message ...
2019-06-03 17:20:36
231
原创 WCF搭建Web接口
本文仅为个人理解,如有错误请指正。WCF基本概念:Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台。整合了原有的windows通讯的 .net Remoting,WebService,Socket的机制,并融合有HTTP和FTP的相关技术。Demo代码: priv...
2019-05-23 20:19:24
988
原创 C# 异步之Async/await
该文章仅为个人理解,如有错误请指正,标红内容为重点,会有针对异步的多个文章,包含Task,APM(BeginInvoke,EndInvoke)等。一、基本概念:Async/await 关键字是在.Net 4.5引入的关键字来创建自动延续任务实现异步调用。 async/await是语法糖,等价于task.Run().ContinueWith(action,Task.FromCurrentS...
2019-05-16 17:00:03
1791
原创 C# 事务- TransactionScop 类
主要进行TransactionScope类的使用,事务等概念进行简单的说明,本文仅为个人认知,如有错误请指正。事务:就是一个复杂操作的集合,这个集合中任何一个操作的失败都会引起整个集合的失败。TransactionScope定义代码的事务范围,该类现成安全,实现接口IDisposable,除了重载的构造函数,只有Complete方法。在System.Transaction.dll...
2019-04-22 17:31:31
560
原创 Redis Getbit和Setbit详解
仅为个人理解,如有错误,请指正。说明:string数据类型可以直接存储数字和字符串,存储方式是以二进制方式进行存储。 getbit和setbit是获取和设置指定位置上的偏移量的位,也就是位置的bit值,bit值只有0和1。 获取方式不是从低位到高位,而是从高位到低位。 举例存储数字1 存储:set num...
2019-04-12 13:58:26
1532
原创 Hook 之 CallNextHookEx,SetWindowsHookEx,UnhookWindowsHookEx
Hook相关内容不讲解,三个函数说明不讲解,直接上代码,简洁明了。 public Form1() { InitializeComponent(); IntPtr currentModule = GetModuleHandle(Process.GetCurrentProcess().MainModule.Modu...
2019-03-19 16:58:27
789
原创 C# 运算符大全(按照操作数个数分类)
一元运算符: + - ! ~ ++ – true false & sizeof()二元运算符: +=,-=等不进行说明。+ - * / % > = is as == & ^ && || += -= *= /= %=
2017-10-13 17:12:10
2995
1
原创 C# 一元操作符及重载
一元操作符: + - ! ~ ++ – true false & sizeof()可重载的一元操作符: + - ! ~ ++ – true false1.先说明操作符的作用。 2.对可重载的操作符进行重载举例。说明: +: 一元 + 运算符是为所有数值类型预定义的。对数
2017-10-12 20:17:30
2341
原创 C# IEnumerable、IEnumerator和yield关键字详解
可枚举类型就是可以通过foreach循环进行运算的,支持GetEnumerator方法的(可以有参数)的类,那么这个类可以称为可枚举类型一、IEnumerable和IEnumerator 1.IEnumerable 该枚举数支持在非泛型集合上进行简单迭代。 1.1IEnumerator GetEnumerator() 返回一个循
2017-09-03 19:57:15
1485
原创 C# 值传递和引用传递详解
本文章仅为个人学习总结,如有错误请指正。 首先区分,引用传递和引用类型无关,值传递和值类型无关。 建议自己定义一个类,通过类来感受一下引用传递和值传递的区别。 out和ref都可以实现引用传递,但是之间的区别通过参数修饰符的文章进行全面了解。 通过两个demo说明: 引用传递和值传递最大的区别为能否改变所引用的对象,当一个实参传
2017-08-20 20:11:27
1250
原创 C# out、ref、params、可变参数、命名参数详解
本文章仅为个人学习总结,如有错误请指正分别介绍五个参数修饰符的名称、效果和使用、声明、调用等情况:参数顺序: out、ref、默认参数->可选参数->params全面说明参数的各种特征: out: 名称:输出参数 效果:实现将值类型参数变为引用类型参数,并实现一个函数多个返回值 声明:在定义函数时必
2017-08-20 09:34:45
484
原创 C# checked和unchecked关键字与强制类型转换
本文仅为个人学习总结,如果错误请指正。 在编写代码时候,经常会遇到智能提示中出现checked和unchecked,也有可能与遇到尤其是数字类型转换问题出现的溢出等各种情况,那么应该了解一下checked和unchecked两个关键字和强制类型转换、Convert等知识。 需要了解的相关知识: 强制类型转换符()和里氏转换是两个不同的概念
2017-08-19 20:37:01
686
原创 C# Object及成员
本文章仅为个人学习,如有错误之处请指正。1.Object 为一切类型的基类。2.Object是引用类型,值类型先派生自ValueType,ValueType派生自Object。3.Object[]并不是一切数组的基类,当Object[]无法和其他数组进行隐式或者显示的类型转换,即使Object[]实际存储的为对应的类型,也是没有办法进行转换的。4.任何数组都是引用类型,而不是值
2017-08-06 18:09:38
6878
原创 C# 单例模式扩展
由于开发一个小Winform小程序,很多页面必须使用单例模式(Singleton Pattern)但由懒的写那么多,所以创建这么一个单例类,诊断窗体进行处理, 此类可以进行作为其他的单例进行使用,只要存在一个父类,那么就可以进行使用。 个人感觉此类书写还比较不错,所以记录以供大家指正、学习。 //单例模式代码 public static class Singlet
2017-08-06 13:09:13
372
原创 C# new和初始化
本文章仅为个人学习,如有错误,请指正。虽然知道使用new可以创建对象,但一直不是很理解初始化和new等知识的具体。通过8个问题和需求,了解相关知识。了解问题和需求1.new 的三个步骤2.初始化是什么意思。3.变量声明后和变量赋值为null或变量调用了new的区别。4.字段不是变量。1.new的三个步骤:1.1在栈或者堆中开辟空间,空间的大小由类决定,进行内
2017-08-06 11:54:53
3995
原创 C# Main函数
本文章是个人学习后的总结,如有错误请指正。 只有彻底了解,才能正确使用。Main的创建 当创建一个C#可执行应用程序(控制台,Windows桌面程序或Windows服务)的时候,会自动创建一个雷Program,该类中有一个静态的Main函数。Main函数的签名: 签名:指的是一个方法具有的名称、返回类型和参数列表。 Main函数必须使用stat
2017-08-06 10:38:47
3163
2
原创 C# SQL Server的封装(SQLDataAdapter等)之二(共二)
本文章仅是本人学习后总结,如有错误之处,请大家指正。既然你看到这篇文章,说明最少懂,如果看完了还不懂。。。。。你怎么不上天呢。。。以下Demo均以SQL Server为例说明。七个DEMO分别说明以下情况 1.connection字符串 2.Command的常用的三个方法。 3.SqlDataApater的Fill方法。 4.SqlDataAdapter的Upd
2017-08-05 22:14:28
539
原创 C# SQL Server的封装(SQLDataAdapter等)之一(共二)
本文章仅是本人学习后总结,如有错误之处,请大家指正。既然你看到这篇文章,说明最少懂,如果看完了还不懂。。。。。你怎么不上天呢。。。确实还不懂的。。。那么你赢了。。。会由详细的文章进行介绍相关的几个类。以下Demo均以SQL Server为例说明。七个DEMO分别说明以下情况 1.connection字符串 2.Command的常用的三个方法。 3.SqlDataApa
2017-08-05 21:54:26
3112
原创 System.Environment类
System.Environment类 从名称可以明白为环境。 提供有关当前环境和平台的信息以及操作它们的方法。 此类事一个静态的,不能被继承的类属性: 1.CommandLine 获取该进程的命令行。 字符串数组,启用程序传入的参数,多个参数中间以空格分隔。 2.CurrentDirectory
2017-07-30 17:39:05
554
原创 C# Winfrom窗体之间传值
有任何错误之处请多指正。多个WinForm窗体之间需要进行数据的传递,如何进行传递,如何更好的进行传递。窗体之间传值有五种方式(重点说委托)1.使用构造函数进行实例化时进行传值(无demo);2.使用Tag进行传值(无demo);3.使用静态资源进行传值(无demo);4.通过属性进行传值(无demo);5.通过委托进行传值委托demo: 说明: Form1有一
2017-07-29 21:58:37
3941
3
原创 C# TabControl重写
看到有很多TabControl类似的控件,界面友好,具有更多的其他功能,比如关闭,所以进行自己上网搜了一下,然后自己进行实践,有了如下内容。如有错误之处,请指正。1.Graphics不懂,看Graphics类详解2.首先了解TabControl这个控件。属性: 1.Alignment 获取或设置选项卡在其中对齐的控件区域(例如,顶部边缘)。 即选
2017-07-29 21:19:30
2664
原创 Graphics类及相关类详解
如果发现有什么错误地方,请指正,本文章仅仅是个人的了解和学习结果。本文章介绍Graphics类的使用并通过demo进行了解,至于User32.Dll的使用在其他文章进行详细介绍。1.相关介绍。2.属性。3.函数。4.创建Graphics。5.注意事项6.Demo。个人理解:Graphics是一个画家,而创建Graphics的参数Handle或者Image等为画板,当Graphics进行绘
2017-07-25 22:53:39
6192
原创 C#ListView详解(三)
了解ListView的成员和简单demo请查看详解一和详解二 Demo3: 拖放ListVIewItem实现重新排序 注意拖放的事件发生顺序(讲解一) Code: private void btnDemo3_Click(object sender, EventArgs e) { lvContain
2017-07-22 22:55:37
343
原创 C#ListView详解(二)
ListViewItem成员请看C#ListViewItem详解(一)Demo1:ListView基本操作和Group使用。 Code: private void Demo1_Click(object sender, EventArgs e) { //用于计算加载用时,建议使用Button的Click事件来观察
2017-07-22 19:45:40
702
原创 C#ListView详解(一)
ListView详解 分两篇进行讲解1.讲解ListView类的成员。 2.通过demo进行说明相关成员和DragDrop(拖放)。一、属性(仅限常用)1.View获取或设置项在控件中的显示方式。1.1LargeIcon 最大化图标,下面有一个标签ListViewItem.Text属性2.Details每个项显示在不同的行上,并带有关于列中所排列
2017-07-22 13:05:43
4030
原创 javascript的typeof
此文章均为个人看法,目的为相互交流,望大家指正一、作用:获取当前变量的类型的字符串。二、使用:1.typeof 变量var currentTime=new Date();alert(typeof currentTime)2.typeof(变量)var currentTime=new Date();alert(typeof currentTime);三、疑问
2017-05-14 18:57:05
339
原创 设计模式之中介者设计模式n
中介者设计模式的说明,不进行详细介绍,重点放在代码段中介设计模式定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互。使用场合:1.一组定义良好的对象,现在要进行复杂的通信。2.定制一个分布在多个类中的行为,而又不想生成太多的子类。优点:1.降低了系统对象之间的耦合性,使得对象易于独立的被复...
2017-02-12 13:55:25
172
原创 值类型、引用类型和string详解之一(共三)
仅为个人理解,如有错误,请指正。。。。。之一:说明引用类型与值类型之二:说明值传递和引用传递之三:讲解string并对string常用函数进行说明简单说明值类型与引用类型:值类型:1.值类型继承自System.ValueType类型。 2.值类型包含:内置类型、用户自定义类型、枚举。 3.内置类型:
2017-01-07 22:05:04
302
原创 单例模式的使用与说明
环境说明: 本方法不针对多线程。1.在窗体应用程序中,很多的窗体只能也只需要出现一次,这就需要使用到单例模式。2.当需要设置为单例模式的窗体少量较少时,我们可以进行对窗体进行使用单例,但是过多时如何去实现单例。理解说明:对象的创建需要三步骤,我们能操作的只有在对象创建的第三部,也就是调用构造函数,那么实现单例只能通过操作构造函数来实现单例。举例:1.窗体的单例模
2017-01-06 21:42:39
339
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人