C#
文章平均质量分 77
bemodesty
这个作者很懒,什么都没留下…
展开
-
Monitor.Enter() 和 Monitor.Exit()
Monitor 方法是静态的,不需要生成Monitor 类的实例就可以直接调用它们。在.NET Framework 中,每个对象都有一个与之关联的锁,对象可以得到并释放它以便于在任意时间只有一个线程可以访问对象实例变量和方法。类似的,.NET Framework 中的每个对象都提供一个允许自己进入等待状态的机制。与锁的机制类似,这种机制的主要目的是为了实现线程间通信。当一个线程进入到一个对象的关键部分且需要一个特定条件并假设另外一个线程将会在同样的关键区域中创建条件时这种机制才会发生。 现在比较特别的.转载 2021-03-30 16:44:01 · 1191 阅读 · 0 评论 -
DES加密算法原理与实现
DES算法简介DES(Data Encryption Standard)是目前最为流行的加密算法之一。DES是对称的,也就是说它使用同一个密钥来加密和解密数据。DES还是一种分组加密算法,该算法每次处理固定长度的数据段,称之为分组。DES分组的大小是64位,如果加密的数据长度不是64位的倍数,可以按照某种具体的规则来填充位。从本质上来说,DES的安全性依赖于虚假表象,从密码学的术语来讲就是依赖于“混乱和扩散”的原则。混乱的目的是为隐藏任何明文同密文、或者密钥之间的关系,而扩散的目的是使明文中的有转载 2021-03-19 10:14:30 · 33357 阅读 · 2 评论 -
C#多线程解决界面卡死问题
当我们的界面需要在程序运行中不断更新数据时,当一个textbox的数据需要变化时,为了让程序执行中不出现界面卡死的现像,最好的方法就是多线程来解决一个主线程来创建界面,使用一个子线程来执行程序并更新主界面using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.转载 2021-03-16 15:13:34 · 1398 阅读 · 0 评论 -
C#窗口句柄
在Windows中,句柄是一个系统内部数据结构的引用。例如当你操作一个窗口,或说是一个Delphi窗体时,系统会给你一个该窗口的句柄,系统会通知你:你正在操作142号窗口,就此你的应用程序就能要求系统对142号窗口进行操作——移动窗口、改变窗口大小、把窗口极小化为图标等。实际上许多 Windows API函数把句柄作为它的第一个参数,如GDI(图形设备接口)句柄、菜单句柄、实例句柄、位图句柄等,不仅仅局限于窗口函数。换句话说,句柄是一种内部代码,通过它能引用受系统控制的特殊元素,如窗口、位图、图标、内存块、转载 2021-03-15 16:33:58 · 2585 阅读 · 0 评论 -
Partial class
C# 2.0 可以将类、结构或接口的定义拆分到两个或多个源文件中,在类声明前添加partial关键字即可。例如:下面的PartialTest类class PartialTest{string Str_FieldTest;int Int_FieldTest;public void DoTest(){Debug.Print("Test");}}可在不同源文件中写成下面形式:一个文件中写:partial class PartialTest{string转载 2021-03-09 15:54:32 · 90 阅读 · 0 评论 -
internal
进入主题之前先来了解一下,项目、解决方案、程序集、命名空间四个容易混淆的概念。①项目:就是我们开发的一个软件。.NET下,项目有多种类型,如控制台、Windows应用程序、类库、Web应用程序等等。经过编译后,会生成.exe文件和.dll文件。.exe文件有统一的主程序入口, 可以被执行,而类库只是提供一些功能给其他项目调用。②解决方案:当我们在VS中新建任何一种类型项目时,这个项目还属于一个解决方案。当我们的业务相对简单时,解决方案所发挥的作用并不是很大。但当我们开发复杂的软件时,需要多个模块转载 2021-03-05 17:29:22 · 486 阅读 · 0 评论 -
值类型和引用类型
首先,什么是值类型,什么是引用类型?在C#中值类型的变量直接存储数据,而引用类型的变量持有的是数据的引用,数据存储在数据堆中。值类型(value type):byte,short,int,long,float,double,decimal,char,bool 和 struct 统称为值类型。值类型变量声明后,不管是否已经赋值,编译器为其分配内存。引用类型(reference type):string 和 class统称为引用类型。当声明一个类时,只在栈中分配一小片内存用于容纳一...转载 2021-03-04 13:25:19 · 468 阅读 · 1 评论 -
C#中application.doevent的作用
Application.DoEvents()的作用:处理所有的当前在消息队列中的Windows消息。privatevoidbutton1_Click(objectsender,EventArgse) { for(inti=0;i<10000;i++) { label1.Text=i.ToStrin...转载 2019-04-26 10:27:03 · 843 阅读 · 0 评论 -
方法重载(overload)
重载(overload)方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。调用时,会根据不同的参数表选择对应的方法。两同三不同。——同一个类,同一个方法名。——不同:参数列表不同。(类型,个数,顺序不同)只有返回值不同不构成方法重载。只有形参的名称不同,不构成方法重载。与普通方法一样,构造函数也可以重载。...转载 2019-04-17 07:35:53 · 629 阅读 · 0 评论 -
volatile
class Test { //volatile多用于多线程的环境,当一个变量定义为volatile时,读取这个变量的值时候每次都是从momery里面读取而不是从cache读。 //这样做是为了保证读取该变量的信息都是最新的,而无论其他线程如何更新这个变量。 //volatile 修饰符通常用于由多个线程访问但不使用 lock 语句对访问...转载 2019-01-31 10:13:53 · 93 阅读 · 0 评论 -
Thread.isbackground用法
C#中,Thread类有一个IsBackground 的属性.MSDN上对它的解释是:获取或设置一个值,该值指示某个线程是否为后台线程。个人感觉这样的解释等于没有解释..Net中的线程,可以分为后台线程和前台线程。后台线程与前台线程并没有本质的区别,它们之间唯一的区别就是:后台线程不会防止应用程序的进程被终止掉。呵呵,这句话读出来好像并不那么好懂.其实,说白了就是当前台线程都结束了的时候,整个...转载 2019-01-31 10:10:44 · 1433 阅读 · 0 评论 -
C# Socket编程 同步以及异步通信
套接字简介:套接字最早是Unix的,window是借鉴过来的。TCP/IP协议族提供三种套接字:流式、数据报式、原始套接字。其中原始套接字允许对底层协议直接访问,一般用于检验新协议或者新设备问题,很少使用。套接字编程原理:延续文件作用思想,打开-读写-关闭的模式。C/S编程模式如下:Ø 服务器端:打开通信通道,告诉本地机器,愿意在该通道上接受客户请求——监听,等待客户请求——接受...转载 2018-11-23 16:04:09 · 12747 阅读 · 2 评论 -
C#对象序列化与反序列化
1.对象序列化的介绍(1).NET支持对象序列化的几种方式二进制序列化:对象序列化之后是二进制形式的,通过BinaryFormatter类来实现的,这个类位于System.Runtime.Serialization.Formatters.Binary命名空间下。SOAP序列化:对象序列化之后的结果符合SOAP协议,也就是可以通过SOAP 协议传输,通过System.Runtime.Se...转载 2018-11-20 14:29:59 · 152 阅读 · 0 评论 -
C# 序列化
程序员在编写应用程序的时候往往要将程序的某些数据存储在内存中,然后将其写入某个文件或是将它传输到网络中的另一台计算机上以实现通讯。这个将程序数据转化成能被存储并传输的格式的过程被称为"序列化"(Serialization),而它的逆过程则可被称为"反序列化"(Deserialization)。 .Net框架对序列化机制具有非常好的支持,它提供了两个名字空间(namespace):Syst...转载 2018-11-16 16:38:25 · 180 阅读 · 0 评论 -
abstract(C# 参考)
abstract 修饰符指示所修饰的内容缺少实现或未完全实现。abstract 修饰符可用于类、方法、属性、索引器和事件。在类声明中使用abstract 修饰符以指示某个类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。在此例中,类 Square 必须提供 Area 的实现,因为它派生自 ShapesClass:C# abstract clas...转载 2018-09-30 12:15:03 · 738 阅读 · 0 评论 -
C# 事件介绍
事件(event),这个词儿对于初学者来说,往往总是显得有些神秘,不易弄懂。而这些东西却往往又是编程中常用且非常重要的东西。大家都知道windows消息处理机制的重要,其实C#事件就是基于windows消息处理机制的,只是封装的更好,让开发者无须知道底层的消息处理机制,就可以开发出强大的基于事件的应用程序来。先来看看事件编程有哪些好处。在以往我们编写这类程序中,往往采用等待机制,为了等待某件事情的...转载 2018-07-11 15:45:38 · 334 阅读 · 0 评论 -
C#委托
什么是委托 首先要知道什么是委托,用最通俗易懂的话来讲,你就可以把委托看成是用来执行方法(函数)的一个东西。如何使用委托 在使用委托的时候,你可以像对待一个类一样对待它。即先声明,再实例化。只是有点不同,类在实例化之后叫对象或实例,但委托在实例化后仍叫委托。声明,如:1 namespace Vczx.ProCSharp.Exc2 {3 delegate double ...转载 2018-07-11 16:19:17 · 223 阅读 · 0 评论 -
C# Serializable 对象序列化
1、序列化定义:将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。反之,反序列化根据流重新构造对象。在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本2、使用序列化的原因:将对象的状态...转载 2018-07-23 20:49:31 · 322 阅读 · 0 评论 -
组件与控件
在.NET中有组件、控件和用户控件。其实从字面上已经可以理解各自的不同了。但是具体关系其实是从类的继承上来区别的。一般控件派生于:Control类,所以从此类派生出的称之为控件。一般组件派生于:Component类,所以从此类派生出的称之为组件。一般用户控件派生于:UserControl类,所以从该类派生出的称之为用户控件。(我们之所以这么叫其实是因为英文翻译上的习惯)他们之间的关系主要是:Us...转载 2018-07-18 20:26:09 · 1945 阅读 · 0 评论 -
C#之static
一、静态类 静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量。在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例化该静态类;其次,它防止在类的内部声明任何实例字段或方法。 1、静态类的主要特性: [1] 仅包含静态成员。 [2] 无法实例化。 [3] 静态类的本质,是一个抽象的...转载 2018-07-25 14:23:48 · 128 阅读 · 0 评论 -
类和对象、方法和属性
C#基础知识汇总:一、相关概念1、对象:现实世界中的实体(世间万物皆对象) 对象,即系统中用于描述客观事物的一个实体,是构成系统的一个基本单位。2、类:具有相似属性和方法的对象的集合 是具有相同数据成员和函数成员的一组对象的集合,它为属于该类的全部对象提供了抽象的描述。3、面向对象程序设计的特点:封装 继承 多态 封装:面向对象技术中的封装,简单来说就是将代码及其...转载 2018-07-30 17:06:08 · 10557 阅读 · 1 评论 -
&与&&区别 C#
C#中&和&&的区别 1)&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。2)&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null &...转载 2018-08-10 10:02:49 · 163 阅读 · 0 评论 -
操作符优先级
运算符 名称或含义 使用形式 结合方向 说明 1 [ ] 数组下标 数组名[整型表达式] 左到右 ( ) 圆括号 (表达式)/函数名(形参表) . 成员选择(对象) 对象.成员名 -> 成员选择(指针) 对象指针->成员名 2 ...转载 2018-08-10 11:21:29 · 746 阅读 · 0 评论 -
多线程
一、什么是多线程 线程:是可与其他指令序列并发的一个指令序列。多线程:允许多个序列同时执行的程序。操作系统通过时间分片的机制模拟多个线程并发运行。利用时间分片技术操作系统能以极快的速度从一个线程切换到另一个线程,给人的感觉就是所有线程都在同时执行。现在编程中不能滥用多线程编写程序,因为线程同时存在太多,线程切换开销就会成几何次方增加,这时的线程反而成了降低性能的原因。过多的线程...转载 2018-08-16 08:21:55 · 118 阅读 · 0 评论 -
ref 与out区别
ref 关键字会导致参数通过引用传递,而不是通过值传递。 通过引用传递的效果是,对所调用方法中的参数进行的任何更改都反映在调用方法中。 例如,如果调用方传递本地变量表达式或数组元素访问表达式,所调用方法会将对象替换为 ref 参数引用的对象,然后调用方的本地变量或数组元素将开始引用新对象。注意 不要混淆通过引用传递的概念与引用类型的概念。 这两种概念是不同的。 无论方法参数是值类型...转载 2018-08-17 11:50:15 · 188 阅读 · 0 评论 -
abstract 与interface区别
一、abstract classabstract 声明抽象类抽象方法,一个类中有抽象方法,那么这个类就是抽象类了。所谓的抽象方法,就是不含主体(不提供实现方法),必须由继承者重写。因此,抽象类不可实例化,只能通过继承被子类重写。实例代码: using System; using System.Collections.Generic; using S...转载 2018-08-28 09:39:07 · 305 阅读 · 0 评论 -
简单的BackGroundWorker多线程时时刷新UI界面,并显示进度
BackGroundWorker是微软提供的封装好了的,非常实用的控件,我们可以在控件中将其拖到Winform之中,然后简单的系统生成代码式的编辑事件处理。以下是,比较经典且简单的实用,后面的一篇较复杂,不使用微软控件式,自行生成,并传递参数给多线程,并通过多线程更新主线程的多处UI,线程没操作完一笔记录,则报告进度,更新UI。 下图是微软提供给我们的控件,拖到Winform中...转载 2018-08-24 14:52:40 · 2427 阅读 · 0 评论 -
C#关键字之override详解
重载、重写、覆写,分别指的是overload、override、new。一、override重写,是在子类中重写父类中的方法,两个函数的函数特征(函数名、参数类型与个数)相同。用于扩展或修改继承的方法、属性、索引器或事件的抽象或虚拟实现。提供从基类继承的成员的新实现,而通过override声明重写的方法称为基方法。注意事项:1.重写基方法必须具有与override方法相同的签名。2.over...转载 2018-07-09 20:54:37 · 260 阅读 · 0 评论