C#高级编程第一部分
文章平均质量分 80
见证大牛成长之路
这个作者很懒,什么都没留下…
展开
-
C#高级编程三十八天----运算符
运算符类别运算符算术运算符+ - * /逻辑运算符& | ^ ~ && || ~字符串连接运算符+增量和减量运算符++ --移位运算符>比较运算符== != =原创 2015-07-14 14:15:09 · 1723 阅读 · 1 评论 -
C#高级编程四十二天----委托和事件
委托和事件 委托是C#总比较重要的概念,学习C#爱这里最容易产生迷惑.有些时候,犹豫我们在开发程序时对后续可能出现的要求及变化考虑不足而导致麻烦,这些新变化可能导致程序的重新编写,那能不能改变这种情况?后面的需要变化了,后续对应功能的编写对前面的程序不造成影响?可以的,在C#中可以使用委托来解决这个问题. delegate 怎么理解委托呢,形象一点就是你的名字叫张三,别原创 2015-07-19 23:32:29 · 1206 阅读 · 1 评论 -
C#高级编程四十三天----Lambda表达式
Lambda表达式 案例:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; namespace lambda表达式{ class Program {原创 2015-07-20 18:09:24 · 1208 阅读 · 0 评论 -
C#高级编程----小结
总结概括 委托是寻址方法的.NET版本,类似于C++中的指针.委托可以理解为指向函数的指针,它是类型安全的,定义了具体的参数和返回值.定义一个委托,实际上是定义一个类,委托是对方法的引用,如方法Func,把功能交给委托的类来实现.委托的作用:结合泛型,可以实现功能上的扩展(如针对整型的函数,可以通过委托指向多种函数,实现类中某个属性的比较).Lambda表达式需要使用委托定义.事件原创 2015-07-20 22:19:44 · 1374 阅读 · 0 评论 -
C#高级编程四十五天----格式字符串
格式字符串1.格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元)案例: string str=string.Format("{0:C}",0.2); Console.WriteLine(str);分析:中文操作系统的结果为:¥0.20 (英文操作系统结果:$0.20)默认格式化小数点后面保留两位小数,如果原创 2015-07-21 18:58:32 · 763 阅读 · 0 评论 -
C#高级编程四十四天-----string和stringbuilder
System.String类首先string类是静态的,System.String是最常用的字符串操作类,可以帮助开发者完成绝大部分的字符串操作功能,使用方便.1.比较字符串比较字符串是指按照字典排序规则,判定两个字符的相对大小.按照点点规则,在一本英文字典中,出现在前面的单词小于出现在后面的单词.在string类中,常用的比较字符串的方法包括Compare,CompareTo,Com原创 2015-07-21 17:36:37 · 1094 阅读 · 0 评论 -
C#高级编程四十六天----正则表达式
正则表达式 1.定义一个Regex类的实例Regex regex=new Regex(“”);这里初始化参数就是一个正则表达式,”\d”表示配置数字2.判断是否匹配判断一个字符串,是否匹配一个正则表达式,在Regex对象中,可以使用Regex.IsMatch(string )方法. Regex regex = new Regex(@"\d");原创 2015-07-22 00:38:07 · 1248 阅读 · 0 评论 -
C#高级编程六十天----LINQ的概述
LINQ的概述LINQ的全名为语言继承查询,是VS2008个.NET3.5版中一款突破性的创新,他再对象领域和数据领域之间架起了一座桥梁.使用LINQ能大大加快对于对象数据等等的查询,加快效率. 由于低版本的VS不支持LINQ,我是用的VS2012,案例如下: public class ObjDataItem { public string Nam原创 2015-08-02 15:24:06 · 1003 阅读 · 0 评论 -
C#高级编程六十二天----LINQ标准的查询操作符
LINQ标准的查询操作符首先我们来看一下LINQ的操作符,可根据查询操作符的操作”类型”进行分类,如把它们分成投影,限制,排序,联接,分组,串联,聚合,集合,生成,转换,元素,相等,量词,分割等.类型操作符名称投影操作符Select,SelectMany限制操作符Where排序操原创 2015-08-02 19:33:25 · 1653 阅读 · 0 评论 -
C#高级编程六十三天----并行LINQ
并行LINQ.NET4在System.Linq命名空间中包含一个新类ParallelEnumerable,可以分解查询的工作使其分布在多个线程上.尽管Enumerable类给IEnumerable接口定义了扩展方法,但ParallelEnumerable类的大多数扩展方法是ParallelQuery类的扩展.一个重要的例外是AsParallel()方法,它扩展了IEnumerable接口,返回原创 2015-08-02 20:50:47 · 2441 阅读 · 2 评论 -
C#高级编程八十三天----程序集的含义
程序集的含义一.程序集是包含一个或多个类型定义文件和资源文件的集合.它允许我们分析可重用类型的逻辑表示和物理表示. 相当于你定义了一个项目XXProject,项目存在很多文件(类,窗体,接口,资源等等),编译生成一个DLL文件,就是程序集.当你使用这个程序集的时候,引用改程序及就可以得到该程序集里面的所有东西(类,窗体,接口,资源). 程序集的特征如下:1.程序集原创 2015-08-11 19:43:55 · 1141 阅读 · 0 评论 -
C#高级编程----错误和异常的总结
错误和异常的总结因为总结吗,,可能概念啥的比较多,大家要学着适应.首先是C#中的异常用老处理系统级和用户级的错误状态,是一种结构化,统一的类型安全的处理机制.因为鄙人开始想走C++的道路,所以搞过一段时间的C++,感觉C#还是和C++的异常处理有点区别的.1.在C#中,所有的异常必须由Exception派生的类类型的实例来表示.在C++中,可以使用任何类型的任何值表示异常.2.原创 2015-08-10 21:15:24 · 1982 阅读 · 0 评论 -
C#高级编程小结----集合的小小总结
集合的小结以上文章介绍了如何处理不同类型的集合,数组的大小是固定的,但可以使用列表作为动态增长的集合.队列以先进先出的方式访问元素.栈以后进先出的方式访问元素.链表可以快速的插入和删除元素,但搜索操作比较慢.通过键和值可以使用字典,它的搜索和插入操作比较快.集用于唯一项,可以是无序的HashSet,也可以是有序的SortedSet.ObservableCollection提供了在列表中的元素变原创 2015-07-28 21:45:02 · 982 阅读 · 0 评论 -
C#高级编程三十九天----比较对象的相等性
比较对象的相等性需要理解对象相等的机制对逻辑表达式的编程很重要,另外,对实现运算符重载和类型强制转换也很重要.对象相等的机制有所不同,这取决于比较的是引用类型还是值类型. 比较引用类型的相等性System.Object定义了三个不同的方法来比较对象的相等性:ReferenceEquals()和Equals()两个版本,再加上比较运算符,实际上有四种进行相等比较的方式.原创 2015-07-15 21:35:19 · 759 阅读 · 0 评论 -
C#高级编程八十天----异常类
异常类在C#里,异常处理就是C#为处理错误情况提供的一种机制.它为每种错误情况提供了定制的处理方式,并且把标志错误的代码预处理错误的代码分离开来. 对.net类来说,一般的异常类System.Exception派生于System.Object.还有许多定义好的异常类(例如:System.SystemExpection,SYstem.ApplicationException等),他们又派原创 2015-08-08 20:51:44 · 970 阅读 · 0 评论 -
C#高级编程四十天----运算符重载
运算符重载所谓的运算符重载是指允许用户使用用户定义的类型编写表达式的能力.例如,通常需要编写类似与以下内容的代码,入江两个数字相加,很明显,sum是两个数字之和.int i=5,j=4;int sum = i+j;如果可以使用代表附属的用户定义的类型来编写相同类型的表达式,那当然是最好不过的了:Complex i=5;Complex sum=i+j;运算符重载允许为原创 2015-07-15 23:01:52 · 795 阅读 · 0 评论 -
C#高级编程四十一天----用户定义的数据类型转换
用户定义的数据类型转换C#允许定义自己的 数据类型,这意味着需要某些 工具支持在自己的数据类型间进行数据转换.方法是把数据类型转换定义为相关类的一个成员运算符,数据类型转换必须声明为隐式或者显式,以说明怎么使用它. C#允许用户进行两种定义的数据类型转换,显式和隐式,显式要求在代码中显式的标记转换,其方法是在原括号中写入目标数据类型.对于预定义的数据类型,当数据类型转换时可能失败或原创 2015-07-16 16:02:36 · 1168 阅读 · 0 评论 -
C#高级编程八十一天----捕获异常
捕获异常前面主要说了关于异常的一些基础和理论知识,没有进入到正真的异常案例,这一讲通过几个案例来描述一下异常的捕获和处理.案例代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; name原创 2015-08-10 19:58:08 · 1138 阅读 · 0 评论 -
C#高级编程----第一部分完结
C#第一部分算是结束了第一部分借书了是什么意思呢?打个比方就是说,如果按照一个人的一生是C#的全部知识点的话,现在完成第一部分了就相当于孩子刚出生了.....这就是我不知道C#中这么复杂是好处还是坏处......看了看后面的目录,前十五章的内容连基础都算不上!!!呵呵我去年买了个表,超耐磨的!保守估计要是大体看完得需要半年.呵呵!原创 2015-08-10 21:35:54 · 1514 阅读 · 0 评论 -
C#高级编程---暂停计划
学了两个半月的C#高级编程这本书,看到了第三部分,说实话,我有点怂了,我认怂,暂时先放一下,博客暂停,因为我的水平确实不会了,在写下去也是自欺欺人,我决定先研究研究我比较喜欢的脚本语言JS,开始写的,对于C#,我确实认怂!!请叫我单怂怂....原创 2015-08-11 20:49:26 · 1279 阅读 · 2 评论 -
C#高级编程八十二天----用户自定义异常类
用户自定义异常类前面已经说了不少关于异常的问题了,现在来给大家说一下自定义异常时咋个回事以及咋样. 为啥会出现自定义异常类呢?用用脚趾头想想也明白,是为了定义咱们自己的异常,自定义异常类继承自ApplicationException 首先异常(Exception)分为两大类,一个是预定义的异常类,后者是用户自定义异常类时需要继承的类.案例: using System;原创 2015-08-10 20:34:29 · 1523 阅读 · 0 评论 -
C#高级编程六十一天----LINQ中的扩展方法
LINQ中的扩展方法LINQ中where扩展方法,要想使用,必须导入using System.Linq;我们看一下这个方法的声明:public static IEnumerable Where(this IEnumerable source,Func predicate) 分析:返回类型是IEnumerable第一个参数:this IEnumerable source代表的是他原创 2015-08-02 16:26:59 · 2792 阅读 · 0 评论 -
C#高级编程六十六天----表达式树总结
表达式树总结基础表达式树提供了一个将可执行代码转换成数据的方法.如果你要在执行代码之前修改或转换此代码,那么它是很有用的.有其是当你要将C#代码----如LINQ查询表达式转换成其他代码在另一个程序----如SQL数据库里操作它.表达式树的语法:考虑下面简单的Lambda表达式:Funcfunction=(a,b)=>a+b;这个语法包含三个部分:1.一个声明 : Fu原创 2015-08-03 15:41:09 · 3875 阅读 · 0 评论 -
C#高级编程六十九天----DLR简介
DLR一.近年来,在TIOBE公司每个月发布的编程语言排行榜中,C#总是能挤进前十名,而在最近十年来,C#总体上呈现上升的趋势.C#能取得这样的成绩,有很多因素,其中它在语言特性上的锐意进取让人印象深刻. C#4动态功能是Dynamic Language Runtime(动态语言运行时,DLR)的一部分.DLR是添加到CLR的一系列服务,它允许添加动态语言,如Ruby和Py原创 2015-08-05 10:58:08 · 2496 阅读 · 2 评论 -
C#高级编程七十天----dynamic类型
dynamic类型C#新增了dynamic关键字,正是因为这一个小小的关键字,C#像前迈进了一大步.dynamic是一个类型关键,声明为dynamic的类型与”静态类型”(这里的静态是指编译时确定的类型,例如int,double类型)相比最大的特定它是”动态类型”,它会在运行时尝试调用方法,这些方法的存在与否不是编译时期检查的,而是在运行时查找,如果方法存在并且参数正确,会正确调用,否则会原创 2015-08-05 13:48:02 · 5224 阅读 · 0 评论 -
C#高级编程小结
小结 这几章主要介绍了如何使用新的dynamic类型,还讨论了编译器在遇到dynamic类型时会做什么.还讨论了DLP,可以把它包含在简单的应用程序中.并通过Pythin使用DLR,执行Python脚本,传入传出脚本要使用的值.最后,通过DynamicObject派生一个类,创建了自己的动态类型.原创 2015-08-05 19:51:23 · 1646 阅读 · 0 评论 -
C#高级编程七十三天----浅析C#中内存管理
浅析C#中内存管理前言:个人觉得C#吸收了各种语言的优点,可谓集大成者,但是不知但,这种集所有语言于一身的情况是好是坏.C#编程的一个优点就是程序员不需要关心具体的内存管理,尤其是垃圾收集器会处理所有的内存清理工作.虽然不比手工管理内存,但是如果要编写高质量的代码,还是要理解后台发生的情况,理解C#的内存管理.用户可以得到像C++语言那样的效率,而不需要考虑像在C++中那样内存管理工作的复原创 2015-08-06 15:36:38 · 1021 阅读 · 0 评论 -
C#高级编程七十二天----DynamicObject和ExpandoObject
DynamicObject和ExpandoObject1.ExpandoObject表示一个对象,该对象包含可在运行时动态添加和移除的成员.这个类和动态类型有关,这个类能做些什么?案例: //ExpandoObject这个类需要引入System.Dynamic; dynamic dynEO = new ExpandoObject();原创 2015-08-05 17:03:43 · 9822 阅读 · 0 评论 -
C#高级编程七十一天----DLR ScriptRuntime
包含DLR ScriptRuntimeDLR是微软的一个开源项目.为.NET影城程序提供了动态脚本注入支持.DLR构建的功能包含两个方面,一个是共享的动态类型系统,一个是标准的承载模型.但是VS并没有继承相关的DLL,大家可以从Codeplex获得源码.这里不得不提及CLR,它是整个运行环境的基础,DLR也是运行在其上,这样是由显而易见的好处的,CLR的垃圾垃圾回收,JIT编译,安全模式,DL原创 2015-08-05 15:59:59 · 3874 阅读 · 0 评论 -
C#高级编程七十四天----释放非托管资源
释放非托管资源在介绍释放非托管资源的时候,我觉得有必要先来认识一下啥叫非托管资源,既然有非托管资源,肯定有托管资源. 托管资源指的是.net可以自棕进行回收的资源,主要是指托管堆上分配的内存资源.托管资源的回收工作是不需要人工干预的,有.net运行库在合适的调用垃圾回收器进行回收. 非托管资源指的是.net不知道如何回收的资源,最常见的一类非托管资源是包装操作系统资源的对原创 2015-08-06 18:25:10 · 4628 阅读 · 0 评论 -
C#高级编程七十五天----C#使用指针
在C#中使用指针的语法如果想在C#中使用指针,首先对项目进行过配置: 看到属性了吗?单击: 看到那个允许不安全代码了吗?选中 然后将有关指针,地址的操作放在unsafe语句块中.使用unsafe关键字是告诉编译器这里的代码是不安全的. unsafe关键字的使用:(1)放在函数前,修饰函数,说明在函数内部或函数的原创 2015-08-06 19:12:46 · 1539 阅读 · 0 评论 -
C#高级编程七十六天----使用指针实现基于栈的高性能数组
使用指针实现基于栈的高性能数组以一个案例为主来分析实现方法:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; namespace 基于堆栈的数组{ class Program原创 2015-08-06 19:28:48 · 1114 阅读 · 0 评论 -
C#高级编程五十二天----有序列表
有序列表如果需要基于对所有集合排序,就可以使用SortedList类.这个类按照键给元素排序.这个集合中的值和键都可以使用任意类型.下面的例子创建了一个有序列表,其中键和值类型都是string.默认的构造函数创建了一个空列表,再用Add()方法添加书.使用重载的构造函数.可以定义列表的容量,传递实现了IComparer接口的对象,该接口用于给列表中的元素排序.使用Add(Tkey,Tv原创 2015-07-23 20:11:47 · 2243 阅读 · 0 评论 -
C#高级编程五十三天----字典Dictionary<TKey,TValue>
字典关键字:Dicitionary 说明:必须包含命名空间System.Collection.GenericDictionary里面的每一个元素都是一个键值对(由两个元组组成:键和值).键必须是唯一的,而值不需要唯一的.键和值都可以是任意类型(例如:string,int,自定义类型,等等)通过一个键读取一个值的事件是接近O(1)键值对之间的偏序可以不定义原创 2015-07-24 00:25:36 · 5847 阅读 · 0 评论 -
C#高级编程六十七天----LINQ提供程序
LINQ提供程序.NET3.5包含了几个LINQ提供程序.LINQ提供程序为特定的数据源实现了标准的查询操作符. LINQ提供程序也许会实现LINQ定义的更多扩展方法,但至少要实现标准操作符.LINQ to XML 不仅实现了专门用于XML 的方法,还实现了其他方法,例如System.Xml.Linq 命名空间的Extensions类定义的方法Elements(),Descen原创 2015-08-03 15:55:59 · 1091 阅读 · 0 评论 -
C#高级编程六十四天----并行扩展
并行的扩展扩展1.Parallel的使用:在Parallel下面有三个常用的方法Invoke,For,ForEachParallel.Invoke()方法是最简单,最简洁的将串行的代码并行化.在这里先说一点,就是Stopwatch的使用,Stopwatch到底是个什么东西,首先Stopwatch在命名空间System.Diagnostics中.使用方法如下:var St原创 2015-08-03 10:59:45 · 822 阅读 · 0 评论 -
C#高级编程四十七天----集合接口和类型
集合接口和类型前面介绍了数组和Array类实现的接口.数组的大小是固定的.如果元素个数是动态的,就应私用集合类.List是与数组相当的集合类.还有其他类型的集合:队列,栈,链表和字典. 大多数集合类都可在System.Collections和System.Collections.Generic名称空间中找到.泛型集合类位于System.Collections.Generic名称空间原创 2015-07-22 16:51:10 · 1188 阅读 · 1 评论 -
C#高级编程四十九天----队列
队列1.Queue定义System.Collections.Queue类表示对象的先进先出集合,存储在Queue(队列)中的对象在一端插入,从另一端移除. 2.优点(1).能对集合进行顺序处理(先进先出)(2)能接受null值,并且允许重复的元素 3.Queue的构造器构造器函数注释Queue()初始化原创 2015-07-23 00:50:03 · 1573 阅读 · 0 评论 -
C#高级编程六十五天----表达式树
表达式树以前没听过表达式树,只听过表达式,而且听过Lambda表达式,首先介绍一下.NET里表达式树的核心概念:讲代码作为数据,他将一些代码表示为一个对象树,树中的每个节点本身都是一个表达式,不同的表达式类型代表能在代码中执行不同操作:二元操作,一元操作,方法调用等等. System.Linq.Expression命名空间包含了代表表达式的各个类.所有的表达式类都从Expression原创 2015-08-03 12:56:56 · 2904 阅读 · 0 评论 -
C#高级编程六十八天---LINQ小结
LINQ小结一.LINQ是什么LINQ也就是Language Interrated Query的缩写,怎么一个缩写法我也不明白,即语言集成查询,是微软在.NET3.5中提出的一项新技术,LINQ主要包含四个组件,下面看一下LINQ的一个架构图: 简单的介绍一些四个组件:1.Linq to SQL 组件----可以查询基于关于数据的数据(微软本身只是实现了对SQ原创 2015-08-03 20:27:08 · 2558 阅读 · 0 评论