09 2012 档案
摘要:自定义事件的步骤:1.声明委托:public delegate yourActionEventHandler(Object sender,ArguEvent e);2.声明事件public eventyourActionEventHandler yourAction;3.注册事件:Class class = new Class();class.yourAction += new yourActionEventHandler(Object sender,ArguEvent e);4.实现事件处理函数:public void yourActionEventHandler(Object sender
阅读全文
摘要:Console.WriteLine(1 == 1 & 1 == 1);前后两个判断都会执行.Console.WriteLine(1 == 1 && 1 == 1);如果前面的判断为false则不执行后面的判断.直接返回false.建议用 && 这么做是有原因的.比如 tb 是一个TextBoxif(tb!=null & tb.Text==""){}如果tb!=null的值为true,则这么写会出错.因为不管tb!=null的值为true还是false都会去执行tb.Text=="".而当tb==null的时
阅读全文
摘要:Chapter 4 延迟操作1.引用命名空间using System.Linq;using System.Collections;using System.Collections.Generic;using System.Data.Linq;2.Where方法WHere 方法的作用是根据查询条件过滤结果。where 方法有两个原型:第一个:public static IEnumerable<T> Where<T>(this IEnumerable<T> source,Func<T,bool> predicate);该原型的作用是通过输入一个可以进
阅读全文
摘要:Func Delegates(函数 委托)Func Delegae的声明:public delegate TR Func<TR>();public delegate TR Func<T0, TR>(T0 a0);public delegate TR Func<T0, T1, TR>(T0 a0, T1 a1);public delegate TR Func<T0, T1, T2, TR>(T0 a0, T1 a1, T2 a2);public delegate TR Func<T0, T1, T2, T3, TR>(T0 a0, T1
阅读全文
摘要:1.仿QQ托盘消息闪动:原理:当有消息来的时候,托盘图标以彩色图标和透明图标来回切换表现闪动效果。2.播放WAV文件System.Media.SoundPlayer player = new System.Media.SoundPlayer(); player.SoundLocation = Application.StartupPath + "\\msg.wav"; player.Play();3. 调用Chrome打开指定网址Process process = new Process();process.StartInfo.Use...
阅读全文
摘要:调用 IE:System.Diagnostics.Process myProcess = new System.Diagnostics.Process();myProcess.StartInfo.FileName = "iexplore.exe";myProcess.StartInfo.Arguments = "http://www.net0and1.com/";myProcess.Start();调用默认浏览器:string target= "http://www.net0and1.com";//Use no more than o
阅读全文
摘要:Part 2Chapter 3LINQ to Objects overviewIEnumberalbe<T> Sequences,and the standard QueryIEnumberable<T>, 发音为“I enumerable of T”,IEnumberalbe 是C#中所有泛型集合类必须继承的接口。这个接口允许遍历每个集合的元素。序列的定义就是实现了IEnumerable<T>接口的集合。所有的标准查询语句都是扩展方法,在System。Linq.Enumberalbe命名空间中,静态类,属性中第一个参数是IEnumberable<T&
阅读全文
摘要:查询表达式1.标准点式语法 和 标准表达式法标准表达式法接近于SQL语法,点式语法则更便于使用。C#语言并没有要求我们必须使用哪种方式,很显然,点式语法是更好的选择。在标准表达式法中,Select放在了语句的最后,这样做的原因是为了是方便VS的智能提示。2.点式语法中常用的查询操作:Where,Select,SelectMany,Join,GroupJoin,GroupBy,OrderBy,ThenBy,OrderByDescending,ThenByDescending.3.查询表达式语法:1.查询表达式必须以from开头2.查询表达式必须包含0个或多个from,let,或者 Where从句
阅读全文
摘要:分部方法首先,分部方法只能存在于分部类中,这是分部方法跟分部类唯一一点有联系的地方。引入分部方法的原因:分部方法的使用有点像继承关系中的虚方法一样,只是定义了一个方法的声明,并没有该方法的实现。代码在没有实现的情况下可以编译通过,但方法的参数不会被赋值计算,只有当分部方法实现了其定义的时候,参数才能正常赋值使用。引用分部方法的原因在于可以方便代码在开始的时候只有定义,不实现,方法的实现可以等到以后必要的时候实现。分部方法的使用原则:1.分部方法只能定义在分部类中,其实现也只能在分部类中。2.分部方法必须用关键字 partial 修饰。3.分部方法是私有的,但不能对其指定private修饰符,否
阅读全文
摘要:Lambad表达式树:Lamabda表达式树在编译过程中,有两种方式:如果表达式的第一个参数声明为IEnumberable<T>类型,编译器会编译成IL中间代码,而当扩展方法继承自IQueryable<T>时,编译器会生成一个表达式树。var 关键字,匿名类型,对象初始化var关键字,允许我们在不知道变量类型的情况下初始化变量 如:var a = new {name='张三',sex='男'};但是初始化是必须的var a ;//编译会出错对象初始化:传统的方式是先 new 一个对象 再对对象初始化,例如Address address =
阅读全文
摘要:概述在.NET Framework 3.5中提供了LINQ 支持后,LINQ就以其强大而优雅的编程方式赢得了开发人员的喜爱,而各种LINQ Provider更是满天飞,如LINQ to NHibernate、LINQ to Google等,大有“一切皆LINQ”的趋势。LINQ本身也提供了很好的扩展性,使得我们可以轻松的编写属于自己的LINQ Provider。本文为打造自己的LINQ Provider系列文章第一篇,主要介绍表达式目录树(Expression Tree)的相关知识。认识表达式目录树究竟什么是表达式目录树(Expression Tree),它是一种抽象语法树或者说它是一种数据结
阅读全文
摘要:第2章 C# Language Enhancements For LINQC# 语言新特性1.Lambda 表达式2.表达式树3.var 关键字,对象 和 集合初始化 ,匿名类4.拓展方法5.部分方法6.查询表达式一、Lambda表达式Lambda表达式的引入是为了简化匿名方法的使用,而匿名方法又是为了简化委托代码写在别处,复用率又不高的代码段。书中的例子:使用命名方法(Named Methods)在C# 2.0之前,可以使用委托(delegate)来完成这项工作。比如考虑这样一个应用,对数组元素按照一定的规则进行过滤,对于通用模块,可以写成下面的样子:publicclassCommon{p.
阅读全文
摘要:1.LINQ只能用来查询数据吗?Answer:NO,LINQ还可以用来对数据进行转换。例如把一个intl类型的数组转换成string类型,传统的方法可能需要写一个新的方法,循环遍历该数组中的每一个值,逐一进行转换。而LINQ就可以方便高效地转换。2.Var关键字的使用当变量的类型只有在编译的时候才能确定的情况下,我们可以使用var关键字来代替我们不明确的变量类型。3.Cast 或 OfType 方法的用法LINQ只能应用在实现了IEnumberalbe<T>接口的对象中,对于传统C#集合类型,可以使用Cast(OfType)方法对对象进行转换。example:ArrayList a
阅读全文
摘要:数组:固定长度的一段内存ArrayList:可以理解为可以动态增加内存list是一种泛型链表,解决了ArrayList对于值类型需要装箱拆箱的特点。-------------------------------------数组就是值对象,它存储数据元素类型的值的一系列位置。ArrayList和List可以提供添加删除,等操作的数据。泛型中的元素类型是固定的。ArrayList可以添加任何类型的元素。
阅读全文
摘要:查询表达式(LINQ)简介LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性。已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感知、静态类型等强类型语言的好处。并且它同时还使得查询可以方便地对内存中的信息进行查询而不仅仅只是外部数据源。LINQ定义了一组标准查询操作符用于在所有基于.NET平台的编程语言中更加直接地声明跨越、过滤和投射操作的统一方式,标准查询操作符允许查询作用于所有基于IEnumerable<T>接口的源,并且它还允许适合于目标域或技术的第三方特定域操作符来扩大标准查询
阅读全文
摘要:结对编程(Pair Programming)是一种敏捷软件开发实践,指两个程序员并排坐在一台电脑前,面对同一个显示器,使用同一个键盘和鼠标一起工作.the test-driven developmentthe three rules of TDD:1. You are not allowed to write any production code unless it is to make a failing unit test pass.在写完“红色”(无法通过测试)的单元测试代码之前,不允许写任何的产品代码。2. You are not allowed to write any more
阅读全文
摘要:Delphi把操作数据的方法分成了两种,一种是function,另一种是procedure,分别称为“函数”和“过程”,这二者最大的差别就是函数拥有返回值而过程没有,比如按钮的事件响应过程,这就是一个过程,因此它没有返回值;而一个简单的函数如求字符串长度的函数Length,它的函数原形为function Length(S:string):Integer;这个函数有一个参数S,是您要计算的字符串,它的返回值是一个整数类型,返回字符串的长度。举一个例子来说吧: 假设需要一个函数GetNum(),它有两个整形参数num1,num2,函数经过计算后返回这两个整数的平均数,函数如下:functio...
阅读全文
摘要:Pascal 中的过程类型与C语言中的函数指针相似,为了统一说法,以下称函数指针。函数指针的声明只需要参数列表;如果是函数,再加个返回值。下面讲解指向非对象(一般的)函数/过程的函数指针。例如声明一个过程类型,该类型带一个通过引用传递的整型参数:type IntProc = procedure (var Num: Integer); //IntProc是指向过程的函数指针这个过程类型与任何参数完全相同的例程兼容,即用它声明的变量,可以指向任何此类函数,并通过其进行函数的调用。下面是一个兼容例程:procedure DoubleTheValue (var Value: Integer);begi
阅读全文
摘要:nil是delphi中的null值的概念。
阅读全文