摘要: 我们主要是使用List<T>.FindAll(Predicate<T> match)进行筛选其中Predicate<T>类型的参数,封装了筛选的规则。Predicate<T>是一个泛型委托,这意味着match参数是一个返回bool类型的方法,在FindAll()内部,会调用我们传递进去的这个方法。 public delegate bool Predicate<T>(T obj);在讲述之前我们需要先复习一下几个概念首先理解一下什么叫多态。同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。多态性通过派生类覆写 阅读全文
posted @ 2011-03-02 10:07 JackDuan 阅读(516) 评论(0) 推荐(0) 编辑
摘要: 正如 jimmyzhang所说的:较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。总结:(1)委托时一个类,它定义了方法的类型,使得可以将方法当做另外一个方法的参数来进行传递,这种将方法动态的付给参数的做法,可以避免在程序中大量使用if---else switch等语句,同时使程序有很好的可扩展性。(2)使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时,可以依次调用所有绑定的方法。(3)事件其实没什么不好理解的,声明一个事件不过类似声明了 阅读全文
posted @ 2011-02-26 13:51 JackDuan 阅读(418) 评论(1) 推荐(0) 编辑
摘要: 最近在看jimmyzhang的文章,把自己所想到的东西记录下来,权当笔记。首先说一下泛型的好处:极大的减少了重复代码,使我们的程序更加清爽,泛型类相当于一个模板,可以在需要时为这个模板传入我们想要的类型。首先我们需要看一个 C#实现一个比较简单的冒泡排序publicvoidmaopao(int[]array){intlength=array.Length;for(inti=0;i<length;i++){for(intj=i+1;j<length;j++){if(array[i]>array[j]){inttemp=array[i];array[i]=array[j];arr 阅读全文
posted @ 2011-02-26 10:35 JackDuan 阅读(410) 评论(0) 推荐(0) 编辑
摘要: 一、抽象类: 抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。 二、接口: 接口是引用类型的,类似于类,和抽象类的相似之处有三点:1、不能实例化; 2、包含未实现的方法声明; 3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员); 另外,接口有如下特性:接口除了可以包含方法之外,还可以包含属性、索引器、事件,而且这些. 阅读全文
posted @ 2011-02-25 11:03 JackDuan 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 在C#中使用关键字 abstract 来定义抽象类和抽象方法。 不能初始化的类被叫做抽象类,它们只提供部分实现,但是另一个类可以继承它并且能创建它们的实例。"一个包含一个或多个纯虚函数的类叫抽象类,抽象类不能被实例化,进一步一个抽象类只能通过接口和作为其它类的基类使用."-C++ Programming Language by Stroustrup Chapter13.2抽象类能够被用于类,方法,属性,索引器和事件,使用abstract 在一个类声明中表示该类倾向要作为其它类的基类成员被标示成abstract,或被包含进一个抽象类,必须被其派生类实现。abstractcla 阅读全文
posted @ 2011-02-25 10:51 JackDuan 阅读(666) 评论(0) 推荐(0) 编辑
摘要: 一个带输出参数的存储过程的例子:ALTER PROCEDURE [dbo].[GetCustomers](@rowcount INT OUTPUT)AS SELECT [CustomerID] ,[CompanyName] ,[ContactName] ,[ContactTitle] ,[Address] ,[City] ,[Region] ,[PostalCode] ,[Country] ,[Phone] ,[Fax] FROM [Northwind].[dbo].[Customers]SET @rowcount=@@rowcount 再给一个有返回值的存储过程 ALTER PROCEDUR 阅读全文
posted @ 2011-02-25 09:37 JackDuan 阅读(2541) 评论(0) 推荐(0) 编辑
摘要: 索引的重要性数据库性能优化中索引绝对是一个重量级的因素,可以说,索引使用不当,其它优化措施将毫无意义。聚簇索引(Clustered Index)和非聚簇索引 (Non- Clustered Index)最通俗的解释是:聚簇索引的顺序就是数据的物理存储顺序,而对非聚簇索引的索引顺序与数据物理排列顺序无关。举例来说,你翻到新华字典的汉字“爬”那一页就是P开头的部分,这就是物理存储顺序(聚簇索引);而不用你到目录,找到汉字“爬”所在的页码,然后根据页码找到这个字(非聚簇索引)。下表给出了何时使用聚簇索引与非聚簇索引: 动作使用聚簇索引使用非聚簇索引列经常被分组排序应应返回某范围内的数据应不应一个或极 阅读全文
posted @ 2011-02-24 17:04 JackDuan 阅读(1992) 评论(2) 推荐(4) 编辑
摘要: 首先我建议大家去看看<JQUERY实战>这本书,稍后我会提供本书的jquery实战PDF版本。能省点银子最好啊。然后建议去看看 张子秋大哥的 从零开始学jQuery系列然后去博客园的jQuery专题 地址为:http://kb.cnblogs.com/zt/jquery/其次就是多学多练习了,多在实际项目中使用。终于将这个PDF文件压缩了,现提供下载http://files.cnblogs.com/danyingjie/jQuery实战.part1.rarhttp://files.cnblogs.com/danyingjie/jQuery 阅读全文
posted @ 2011-02-21 10:03 JackDuan 阅读(820) 评论(17) 推荐(0) 编辑
摘要: 根据 假正经哥哥的博客整理,我第一次使用的另外的TREEVIEW,可是 做出来的效果 太卡,不知道什么原因。这次用的假正经哥哥的这篇文章。下面贴上完整的代码,我走了很多弯路,原因就是看了回复中朋友们的代码,现在想起来其实不用那么费事吧。引用代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><scriptsrc="js/jquery-1.4.2.min.js"type="text/javascript&qu 阅读全文
posted @ 2011-02-19 10:29 JackDuan 阅读(1904) 评论(4) 推荐(1) 编辑