自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 收藏
  • 关注

原创 委托的概念

委托是一种引用类型,类似于其他语言的函数指针。委托派生于System.MutiCastDelegate类,而System.MutiCastDelegate类又派生于System.Delegate类

2018-06-24 23:19:50 305

原创 chapter38Condtional特性与条件编译

Condional特性:一般用于程序开发过程中的“测试方法”的编写。测试阶段定义“测试的宏”,发布商业版本,取消宏即可。演示用两种方法:1.方法的Conditional特性2.对于表达式的条件编译#if debug其他预定义特性:Serializable特性:声明结构可以序列化NonSerialized特性声明结构不可以序列化DllImport特性:声明是非托管代码实现的。托管代码:系统的、自动的...

2018-06-24 22:45:45 262

原创 chapter37特性Obsolete

预定义特性Attribute特性(Attribute):是一种允许我们向程序的程序集增加元数据的语言结构,提供了一种将声明性信息与代码关联起来的途径。元数据:类的组成部分、比如字段、属性、方法等。类还有其他的组成部分,比如预定义特性,也是类的组成部分。Obsolete特性:将过时的方法与类标注为“过时”(过期的),且在编译时,显示警告信息。源代码:/*** * 学习特性: * 一、系统特性 * 1...

2018-06-24 22:11:22 272

原创 chapter36Type的IsAssignableFrom(Type c)方法以及更多重要方法

bool IsAssignableFrom(Type c)功能:用来判断一个类Class1和另一个类Class2(参数)是否相同或是另一个类的父类或接口。其实就是一个类是否是参数类的父类或接口bool IsInstanceOfType(object o)功能:判断对象o是否是当前类(或者子类)的实例,或者实现本接口(即:当前类可以是o对象的类、父类、接口)bool IsSubclassOf(Typ...

2018-06-21 01:01:11 219

原创 chapter35反射调用私有方法与属性

属性的调用:例如:Assembly assObj = Assembly.LoadFrom(@"F:\学习反射与特性.exe");Type type = assObj.GetType("类名字符串");  //包含命名空间的类名//根据type创建对象Object obj = Activator.CreateInstance(type);//获得属性PropertyInfo prop = type....

2018-06-19 23:37:13 255

原创 chaper34动态调用有参与方法重载技术

源代码:实体类:/*** *实体类:被分析的对象  *  *  */using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 反射技术调用指定类无参方法{    public class Person    {        //字段        public strin...

2018-06-19 23:00:49 108

原创 chapter33反射技术动态调用指定类无参方法

根据类名与方法名(字符串),动态调用例如:Assembly  assObj = Assembly.LoadFrom(@"F\学习反射与特性.exe");Type type = assobj.GetType("类名字符串");     //包含命名空间的类名//根据Type创建对象Object obj = Activator.CreateInstance(type);//获得方法信息MethodIn...

2018-06-18 23:37:54 118

原创 chapter31程序集Assembly与动态调用

Assembly:得到一个程序集中的反射信息。程序集中的两种存在形式:1)*.dll形式存在的程序集,不能直接运行,是“类库”2)*.exe的程序集,可以点击直接运行如何加载程序集:1)Assembly.Load();  //不推荐使用2)Assembly.LoadFrom("程序集的完整路径名称");例如:Assembly assObj = Assembly.LoadFrom(@"E:\Syst...

2018-06-18 22:53:02 186

原创 chapter30Type类的常用方法

反射的常用类:Type类:是设计用来包含类型的特性,可以获取程序使用的类型的信息(即:可以获得一个类包含的成员与方法)功能:使用Type类对象,可以查看一个类中所有的非私有字段、方法、属性(通过相关的参数也可以查看私有的字段、不常用)Assembly类:得到一个程序集中的反射信息功能:加载程序集Assembly.Load();   //不推荐使用Assembly.LoadFrom("程序集的完整路...

2018-06-17 22:36:06 194

原创 chapter29 反射的概念

生活中的反射:B超检查研究地球内部构造使用的“地震波”什么是反射程序在在运行过程中,可以查看其它程序集或本身程序集中的元数据行为。名词解释:程序集:项目中所有代码以及嵌入式资源的集合。元数据:我们编写的程序以及程序内数据。反射的作用:1)通过反射我们可以读取程序集(*.dll、*.exe)中的内容。2)可以根据(字符串)类名,来动态创建类的对象3)可以动态获取类对象中的习性(方法/属性/字段)4)...

2018-06-17 21:48:01 129

原创 chapter27lamda表达式

Lamda表达式本质就是匿名方法的简写形式通过反编译:我们知道其实Lamda表达式就是匿名方法的“简化机制”c#类似的机制还有:1)foreach是for的简化2)switch是if...elseif...的简化3)三元运算符是if...else的简化Lamda表达式,比匿名方法简化了如下步骤:减少了delegate关键字,以及参数的类型。从C#3.0开始代替“匿名方法”的写法。Lamda的简化性...

2018-06-14 00:21:26 126

原创 chapter26匿名方法

"匿名方法" 就是没有名字的方法“匿名方法”由于没有名称,所以只能赋值给一个委托进行调用。“匿名方法”的作用就是减少代码量,减少复杂性,且这个方法不需要在别处调用。“匿名方法”的本质还是方法,使用委托的地方都可以用例如:Func<int,int,int> funAddingMethodHandle = delegate(int num1, int num2){    return nu...

2018-06-13 23:48:39 119

原创 chapter25委托的取值与清空

得到委托列表:Delegate[] deleteArray = actDelete.GetInvocationList();foreach(Delegate item in deleteArray){        item.DynamicInvoke();}清空委托列表:Delegate[] deleteArray = actDelete.GetInvocationList();for (int...

2018-06-12 23:25:32 175

原创 chapter24委托的优点

委托的优点:1:在算法不变的情况下,优化改进方法的执行效率。2.在算法不变的情况下,改变内部实现(可以随意改内部使用的方法名称)总结:方法中对于委托的调用,类似一种面向“接口”编程的策略,使得程序的耦合性进一步降低,更加优雅。原理(把委托作为参数进行传递)源代码:/*** *  * 研究委托的优点 * 举例: * 求1-1000之间的素数 *  *  */using System;using Sy...

2018-06-10 23:31:21 150

原创 chapter23学习Predicate委托

Predicate委托具备布尔返回值的委托,系统提供了Predicate委托来完成此功能。可以把Predicate委托,看作是Func委托的特例,因为如下:1.只接受一个参数2.必须返回bool类型3.功能上类似Func<T,bool>委托源代码:using System;using System.Collections.Generic;using System.Linq;using ...

2018-06-10 22:35:19 146

原创 chapter22Func委托

Func委托(通用委托)具备返回值的委托,系统提供了Func委托来完成此功能。规则:1:Func委托必须有一个返回数值2:如果需要给Func委托添加参数,则轨道在尖括号内的最后一个为返回类型,前面的均是参数源代码:/*** *学习Func委托  *  * 规则: * 1.必须有一个返回数值 * 2.Func泛型委托,尖括号中最后一个为返回类型 * 3.Func泛型委托,如果尖括号中只有一个参数,则...

2018-06-10 22:23:11 103

原创 线程12:线程问题同步示例2

/*** *进一步显示多线程死锁问题  *  *  *  */using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace 线程问题同步示例2{    class Program    {                      ...

2018-06-10 01:32:39 107

原创 线程11:线程的死锁与同步

1)线程的死锁问题2)线程的”死锁与”同步”问题3)线程”同步”是线程中非常重要的一个概念,所谓同步是指线程之间存在的先后顺序的关联关系。 使用语法 Lock(对象) {//}多个线程可能由于争抢一个所谓的公共资源,造成一些异常情况,解决方法可以使用lock关键字,让多个线程顺序访问公共资源,这个技术也叫线程的同步.源代码:/*** *  *1演示线程的死锁以及解决方式  * 多个线程可能由于争抢...

2018-06-10 01:31:11 116

原创 chapter21Action委托2

源代码:/*** *1.学习Action<T>  *2.泛型委托的参数最多为16个 *  */using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 学习Action委托2{    class Program    {        //声明泛型委托     ...

2018-06-10 01:24:43 94

原创 chapter21学习Action委托

除了我们自定义委托,系统给我们提供了内置委托类型:Action、Func、Predicate等目的是减少自定义委托的必要。Action是一个没有参数,没有返回类型的委托。Action还有16个泛型重载:Action<T>Action<T1,T2>Action<T1....T15,T16>源代码:/*** *Action委托 *目的:为了简化委托的使用 *  * ...

2018-06-10 01:23:44 103

原创 chapter20:委托与事件案例回顾

源代码:(1)调用方  InvokeClass.cs/*** *委托的调用方(包括定义委托) * * 分四个步骤: * 1.定义委托 * 2.声明委托  (声明委托的实例) * 3.注册 * 4.调用 *  * 注意:先注册,后调用 *  *  *  */using System;using System.Collections.Generic;using System.Linq;using Sy...

2018-06-09 00:35:35 113

原创 线程10:前台线程和后台线程

线程分为“前台线程”和“后台线程”。1) 应用程序的主线程以及使用Thread构造的线程都默认为前台线程,线程池中的线程是后台线程。(我们默认创建的线程是“前台线程”)。2) 只有所有的前台线程都关闭后,系统才真正的关闭。后台线程,会随着所有前台线程的关闭而自动关闭。3) 后台线程不会阻止进程的中止。属于某个进程的所有前台线程都中止后,进程就会被中止,所有剩余的后台线程都会停止且不会完成。4) 可...

2018-06-08 23:48:28 2059

原创 线程9:线程的优先级和状态

线程的执行没有规律,如果多个线程执行,能不能设置优先顺序?线程的优先级可以影响线程的调用顺序,我们可以通过使用Priority枚举属性来设置线程的优先级。说明:Highest:    最高级别优先AboveNormal: 在Highest级别后,在Normal之前。Normal:   默认情况下最初为NormalBelowNormal: 在Normal之后,在lowest之前Lowest: ...

2018-06-08 23:46:19 1440

原创 线程8:回调函数方式接受线程结果

/*** *回调函数方式: *启动子线程之后,主线程接着干活,不需要等待 *启动子线程之后,并不影响主线程 *  *  *  */using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace 通过回调函数{    class Pro...

2018-06-07 23:26:23 1446

原创 线程7:等待句柄方式接受线程结果

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace 等待句柄与回调函数方式接受线程结果{    class Program    {        /// <summary>        /// 委托开启线程...

2018-06-07 23:25:03 144

原创 线程6:委托异步调用线程且等待返回数值

委托开启一个线程,参数传递,以及获取线程的返回数值。例:Func<int, int> ac = ThreadMethod3;//IAsyncResult 表示获得当前线程的状态IAsyncResult ar= ac.BeginInvoke(88, null, null);While(!ar.IsCompleted){ Console.Write(“.”);Thread.Sleep(10...

2018-06-07 23:23:28 479

原创 线程5:委托开启线程

使用委托开启一个线程,参数传递,以及获取线程的返回数值。例子:Action ac = ThreadMethod1;ac.BeginInvoke(null,null); 注意;委托开启的线程都是后台线程,后台线程会随着前台线程的关闭而自动关闭 源代码:/*** *学习使用委托开启线程  *  * 注意; * 委托开启的线程都是后台线程,后台线程会随着前台线程的关闭而自动关闭 *  *  */usin...

2018-06-07 00:10:33 606

原创 线程4:线程传参方法_构造函数传参

构造方法传参:可以定义专门的类,在New的时候,在构造函数中传递参数,从而实现线程中带参数传递。源代码;专门的类:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace ThreadPro{    public class M...

2018-06-07 00:09:00 819

原创 chapter19学习小括号运算符(分组运算符)

源代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Text.RegularExpressions;namespace chapter19学习小括号运算符{    class Program    {        /// <summary>...

2018-06-07 00:04:30 232

原创 chapter18正则表达式:学习“或”元字符

|        将两个匹配条件进行逻辑“或”运算()       用小括号指定子表达式(也就是分组)例如:重复多个(abcd){n}进行分组限定。string str = "同学们同学们”;string strPattern = @"(同学们){2}";Regex.IsMatch(str, strPattern);源代码:using System;using System.Collections...

2018-06-05 23:37:29 80

原创 线程3:线程传参方法1

1)多线程技术适用环境任务执行比较耗时的情况,也可以同时解决一些非常耗时的程序长时间占用cpu资源2)定义一个多线程一般写法lamda表达式方式使用委托开启一个线程3)多线程的特点:运行顺序不确定线程之间平行执行4)线程的参数传递一、使用带object参数的方法(通过查看Thread类的定义)        具体使用start()传递参数。      备注:如果需要传递多个参数,可以传递一个集合对...

2018-06-05 18:40:31 186

原创 线程2:多线程的两种定义方式

多线程的特点:并行运行,没有任何次序。/*** *多线程: *1.一般定义方式 *2.多线程的特点 *  1)执行的顺序没有规律 *  2)两个线程是同时执行的 *3.lamda的定义方式  *  *  *  */using System;using System.Collections.Generic;using System.Linq;using System.Text;using Syste...

2018-06-05 18:21:18 536

原创 chapter17(2)正则表达式 重复描述字符

{n}   匹配前面的字符n次{n,}   匹配前面的字符n次或多于n次{n,m}匹配前面的字符n到m次?     重复零次或者一次+      重复一次或者更多次*       表示零到多个元字符,或表示重复零次或者更多次(即:重复前面的次数)例如:判断合法的QQ号(必须5-12位)string strQQ = “517722017”;str strPattern = @"\d{5,12}$";...

2018-06-04 23:03:50 187

原创 chapter17学习"包含"与"非"元字符

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Text.RegularExpressions;namespace chapter17学习_包含_与__非元字符{    class Program    {        /// <summary&gt...

2018-06-04 22:47:11 101

原创 线程1:多线程的概念

进程:简单说是指在系统中正在运行的一个应用程序,通过资源管理器我们可以看到对进程的描述。线程:线程是系统分配处理器时间资源的基本单位。多线程技术使用环境:任务执行比较耗时的情况,也同时可以解决一些非常耗时的程序长时间占用cpu资源。定义一个多线程:(1)一般写法(2)lamda表达式(3)使用委托开启一个线程多线程的特点:(1)运行顺序不确定(2)线程之间平行执行using system.Thre...

2018-06-04 18:32:09 214

原创 Winform中为窗口设置双缓冲

双缓冲为了解决控件刷新时,闪烁的问题。请在构造函数里面底下加上如下几行:[csharp] view plain copySetStyle(ControlStyles.UserPaint, true);  SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.  SetStyle(ControlStyles.DoubleBuffe...

2018-06-04 15:07:16 4136

原创 chapter16基础元字符的讲解

基础元字符:\w表示字母、数字、下划线、汉字“包含”与 “非”元字符[abc]   表示匹配中括号中的字符[a-c]   表示a字符到c字符之间的字符[^X]  表示匹配除了X以外的任意字符[^abcd]表示匹配除了abcd之外的任意字符例如: 把字符串中所有“同学们”,替换为“*”字符string str = “同学们,大家上午好!”;string strPattern= @'[同学们]”str...

2018-06-03 22:50:28 129

原创 chapter15正则表达式的优势

基础语法元字符:.      表示任意字符(换行符除外)\w   表示字母、数字、下划线、汉字。\W 表示“\w”的补集\s  表示任意空白字符(包括换行\n、 回车\r、制表\s、垂直制表\v、换页符\f)\S  表示"\s"的补集\d  表示数字\D 表示非数字* 表示重复0到多次例如:以数字开头,中间有任意个数字,且数字结尾的字符串string str =@"^\d*$";Regex.IsM...

2018-06-03 00:51:30 613

原创 异步Socket编程(1)概念

所谓异步操作模式就是希望让某个工作开始以后,能在这个工作尚未完成的时候继续处理其他工作。比如:客户端服务器端随时可以接受信息与发送信息。...

2018-06-02 16:59:22 277

原创 chapter14正则表达式概念

什么是“正则表达式”正则表达式,又称规则表达式,(英语:Regular Expression,常简写regex、regexp或RE)。正则表达式通常被用来检查、检索、替换那些符合某个模式规则的文本。例如:检查给定的字符串是否为合法的邮箱地址。再例如:屏蔽或替换用户输入的“非法”字符串Regex类与基本元字符静态方法:IsMatch()    "匹配"(是否符合正则表达式)Replace()   "...

2018-06-02 14:34:42 173

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除