c#进阶
0802
图像处理、opencv、机器学习。
展开
-
chapter4.目录管理
Directory类:创建指定路径的目录: Directory.CreateDirectory()删除指定路径的目录: Directory.Delete()是否存在指定路径的目录:Directory.Exists()获得当前工作目录: Directory.GetCurrentDirectory()Assembly获得当前工作的程序集: Assembly.GetExecutingAssembly()...原创 2018-05-25 00:14:51 · 104 阅读 · 0 评论 -
chapter11大文件拷贝
文件流实现大文件的拷贝using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;namespace chapter11大文件拷贝{ class Program { //原始路径 private string sourceP...原创 2018-06-01 23:05:11 · 99 阅读 · 0 评论 -
chapter12文本文件的读写
StreamReader与StreamWriter文本文件的读写是更加频繁的活动,例如我们开发的"日志系统",用FileStream比较繁琐,且需要对于二进制与文本的转换,所以微软提供了专门的文本读写类:StreamReader、StreamWriter,专门用于二进制文件的读写。/*** * 1.学习纯文本文件的读写 * 2.StreamReader与StreamWriter * * * ...原创 2018-06-01 23:27:45 · 130 阅读 · 0 评论 -
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 · 117 阅读 · 0 评论 -
chapter13序列化与反序列化
序列化:就是将类的对象(字段以及数值),以文本的形式保存为文件反序列化:创建相同的对象,然后将文本中的数值,重新赋值给对象源代码:/*** *序列化与反序列化 * * * * * * */using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;u...原创 2018-06-02 14:00:06 · 89 阅读 · 0 评论 -
chapter14正则表达式概念
什么是“正则表达式”正则表达式,又称规则表达式,(英语:Regular Expression,常简写regex、regexp或RE)。正则表达式通常被用来检查、检索、替换那些符合某个模式规则的文本。例如:检查给定的字符串是否为合法的邮箱地址。再例如:屏蔽或替换用户输入的“非法”字符串Regex类与基本元字符静态方法:IsMatch() "匹配"(是否符合正则表达式)Replace() "...原创 2018-06-02 14:34:42 · 177 阅读 · 0 评论 -
chapter37特性Obsolete
预定义特性Attribute特性(Attribute):是一种允许我们向程序的程序集增加元数据的语言结构,提供了一种将声明性信息与代码关联起来的途径。元数据:类的组成部分、比如字段、属性、方法等。类还有其他的组成部分,比如预定义特性,也是类的组成部分。Obsolete特性:将过时的方法与类标注为“过时”(过期的),且在编译时,显示警告信息。源代码:/*** * 学习特性: * 一、系统特性 * 1...原创 2018-06-24 22:11:22 · 279 阅读 · 0 评论 -
chapter38Condtional特性与条件编译
Condional特性:一般用于程序开发过程中的“测试方法”的编写。测试阶段定义“测试的宏”,发布商业版本,取消宏即可。演示用两种方法:1.方法的Conditional特性2.对于表达式的条件编译#if debug其他预定义特性:Serializable特性:声明结构可以序列化NonSerialized特性声明结构不可以序列化DllImport特性:声明是非托管代码实现的。托管代码:系统的、自动的...原创 2018-06-24 22:45:45 · 269 阅读 · 0 评论 -
chapter21学习Action委托
除了我们自定义委托,系统给我们提供了内置委托类型:Action、Func、Predicate等目的是减少自定义委托的必要。Action是一个没有参数,没有返回类型的委托。Action还有16个泛型重载:Action<T>Action<T1,T2>Action<T1....T15,T16>源代码:/*** *Action委托 *目的:为了简化委托的使用 * * ...原创 2018-06-10 01:23:44 · 107 阅读 · 0 评论 -
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 · 95 阅读 · 0 评论 -
chapter29 反射的概念
生活中的反射:B超检查研究地球内部构造使用的“地震波”什么是反射程序在在运行过程中,可以查看其它程序集或本身程序集中的元数据行为。名词解释:程序集:项目中所有代码以及嵌入式资源的集合。元数据:我们编写的程序以及程序内数据。反射的作用:1)通过反射我们可以读取程序集(*.dll、*.exe)中的内容。2)可以根据(字符串)类名,来动态创建类的对象3)可以动态获取类对象中的习性(方法/属性/字段)4)...原创 2018-06-17 21:48:01 · 135 阅读 · 0 评论 -
chapter30Type类的常用方法
反射的常用类:Type类:是设计用来包含类型的特性,可以获取程序使用的类型的信息(即:可以获得一个类包含的成员与方法)功能:使用Type类对象,可以查看一个类中所有的非私有字段、方法、属性(通过相关的参数也可以查看私有的字段、不常用)Assembly类:得到一个程序集中的反射信息功能:加载程序集Assembly.Load(); //不推荐使用Assembly.LoadFrom("程序集的完整路...原创 2018-06-17 22:36:06 · 197 阅读 · 0 评论 -
chapter22Func委托
Func委托(通用委托)具备返回值的委托,系统提供了Func委托来完成此功能。规则:1:Func委托必须有一个返回数值2:如果需要给Func委托添加参数,则轨道在尖括号内的最后一个为返回类型,前面的均是参数源代码:/*** *学习Func委托 * * 规则: * 1.必须有一个返回数值 * 2.Func泛型委托,尖括号中最后一个为返回类型 * 3.Func泛型委托,如果尖括号中只有一个参数,则...原创 2018-06-10 22:23:11 · 106 阅读 · 0 评论 -
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 · 188 阅读 · 0 评论 -
chapter33反射技术动态调用指定类无参方法
根据类名与方法名(字符串),动态调用例如:Assembly assObj = Assembly.LoadFrom(@"F\学习反射与特性.exe");Type type = assobj.GetType("类名字符串"); //包含命名空间的类名//根据Type创建对象Object obj = Activator.CreateInstance(type);//获得方法信息MethodIn...原创 2018-06-18 23:37:54 · 119 阅读 · 0 评论 -
chapter24委托的优点
委托的优点:1:在算法不变的情况下,优化改进方法的执行效率。2.在算法不变的情况下,改变内部实现(可以随意改内部使用的方法名称)总结:方法中对于委托的调用,类似一种面向“接口”编程的策略,使得程序的耦合性进一步降低,更加优雅。原理(把委托作为参数进行传递)源代码:/*** * * 研究委托的优点 * 举例: * 求1-1000之间的素数 * * */using System;using Sy...原创 2018-06-10 23:31:21 · 152 阅读 · 0 评论 -
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 · 111 阅读 · 0 评论 -
线程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 阅读 · 0 评论 -
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 · 127 阅读 · 0 评论 -
chapter5:路径管理
Path类:改变文件的后缀:Path.ChangeExtension()获得文件后缀名称:Path.GetExtension()获得文件名称:Path.GetFileName()获得相对路径对应的绝对路径:Path.GetFullPath()源代码:using System;using System.Collections.Generic;using System.Linq;using Syste...原创 2018-05-26 00:01:06 · 149 阅读 · 0 评论 -
chapter6:文件管理
File类:文件创建: File.Create()文件删除: File.Delete()文件移动(剪切): File.Move()文件是否存在: File.Exists()文件拷贝: File.Copy(path1, path2, true), true表示允许覆盖,false表示不允许覆盖。默认为false源代码:/*** *...原创 2018-05-26 15:18:34 · 139 阅读 · 0 评论 -
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 · 623 阅读 · 0 评论 -
chapter7文件流概念详解
文件的读写:1.Stream 抽象类2.FileStream 文件流(直接操作字节,比较麻烦,主要是理解“流的技术”)3.操作文本文件(封装类)StreamReader 读取文本文件StreamWriter 写入文本文件文件编码:1)二进制 01010101001,以8位作为保存一个字符的单位。英文中只需要128字符即可表示所有英文,即:Ascii码即可。2)ASCII(8位最多表示256位)...原创 2018-05-27 12:09:44 · 181 阅读 · 0 评论 -
chapter16基础元字符的讲解
基础元字符:\w表示字母、数字、下划线、汉字“包含”与 “非”元字符[abc] 表示匹配中括号中的字符[a-c] 表示a字符到c字符之间的字符[^X] 表示匹配除了X以外的任意字符[^abcd]表示匹配除了abcd之外的任意字符例如: 把字符串中所有“同学们”,替换为“*”字符string str = “同学们,大家上午好!”;string strPattern= @'[同学们]”str...原创 2018-06-03 22:50:28 · 131 阅读 · 0 评论 -
chapter8:文件的直接读写操作
文件的读写-直接读取获得当前计算机的所有编码: Encoding.GetEncodings()读取文本文件中的所有内容: File.ReadAllLines(), 返回一个字符串数组读取文本文件中所有内容: File.ReadAllText(), 返回一个字符串文件的读写-直接写入:写入文本文件:File.WriteAllLines(), 覆盖写入文本文件:File.WriteAllText(),...原创 2018-05-28 00:47:47 · 180 阅读 · 0 评论 -
chapet3.YieldRerurn语法解析
yield return语法解析:1.yield return 用于循环遍历中,返回IEnumberable<T>2.yield return用于终止循环遍历3.通过设置“断点”,先F5,然后F11,单步调试,可以发现不同之处。说明:IEnumberable<T>是一个可循环体,可迭代体, List<T>继承实现了这个接口源代码:/*** * 学习yield r...原创 2018-05-23 23:14:54 · 189 阅读 · 0 评论 -
chapter9文件流读写技术和Using机制
文件的读写-文件流读写基于"文件流"的技术,可以优化效率,占用内存小等优点,目前文件的大数据量读写,基本上都是采用“文件流”的方式。“文件流”读取技术FileStream fs;fs.Read();"文件流"写入技术:FileStream fs;fs.Write();定义了文件流之后,相当于磁盘和磁盘之间,目录和目录之间有了一个管道。文件流使用完之后一定要关闭,否则会消耗计算机的内存。使用Usin...原创 2018-05-28 22:59:17 · 305 阅读 · 0 评论 -
chapter17学习"包含"与"非"元字符
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Text.RegularExpressions;namespace chapter17学习_包含_与__非元字符{ class Program { /// <summary>...原创 2018-06-04 22:47:11 · 105 阅读 · 0 评论 -
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 · 195 阅读 · 0 评论 -
chapter10使用Using机制
使用Using机制:1.操作硬盘,就需要try...catch2.为了简化try...catch的机制,使用Using3.凡是使用了Using()自动释放资源的地方,必须实现IDisposable接口源代码:/*** * 使用Using自动释放资源,不用再写fs.Close() * * * * * * * * */using System;using System.Collecti...原创 2018-05-29 23:16:42 · 116 阅读 · 0 评论 -
chapter18正则表达式:学习“或”元字符
| 将两个匹配条件进行逻辑“或”运算() 用小括号指定子表达式(也就是分组)例如:重复多个(abcd){n}进行分组限定。string str = "同学们同学们”;string strPattern = @"(同学们){2}";Regex.IsMatch(str, strPattern);源代码:using System;using System.Collections...原创 2018-06-05 23:37:29 · 81 阅读 · 0 评论 -
chapter25委托的取值与清空
得到委托列表:Delegate[] deleteArray = actDelete.GetInvocationList();foreach(Delegate item in deleteArray){ item.DynamicInvoke();}清空委托列表:Delegate[] deleteArray = actDelete.GetInvocationList();for (int...原创 2018-06-12 23:25:32 · 181 阅读 · 0 评论 -
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 · 225 阅读 · 0 评论 -
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 · 243 阅读 · 0 评论 -
chapter26匿名方法
"匿名方法" 就是没有名字的方法“匿名方法”由于没有名称,所以只能赋值给一个委托进行调用。“匿名方法”的作用就是减少代码量,减少复杂性,且这个方法不需要在别处调用。“匿名方法”的本质还是方法,使用委托的地方都可以用例如:Func<int,int,int> funAddingMethodHandle = delegate(int num1, int num2){ return nu...原创 2018-06-13 23:48:39 · 123 阅读 · 0 评论 -
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 · 263 阅读 · 0 评论