吴佳鑫的个人专栏

当日事当日毕,没有任何借口

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

02 2012 档案

你必须知道的ADO.NET(六) 谈谈Command对象与数据检索
摘要:摘要到目前为止,我相信大家对于ADO.NET如何与外部数据源建立连接以及如何提高连接性能等相关知识已经牢固于心了。如果您对这些知识点还不熟悉,那也没关系。你不妨抽出点时间,再回顾一下我前面写的文章,说不定你又有新的收获呢!俗话说,“前人栽树,后人乘凉”。连接对象作为ADO.NET的主力先锋,为用户与数据库交互搭建了扎实的桥梁。它的一生是平凡而又伟大的,总是尽自己最大的努力为用户搭建一条通往数据库的平坦大道。相比连接对象来说,Command对象似乎耀眼的多。Command对象在ADO.NET世界里总是忙忙碌碌,它就像一个外交官,为用户传达了所有操作数据库的信息。好了,废话不多说了,我们还是直奔主 阅读全文

posted @ 2012-02-27 22:00 _eagle 阅读(328) 评论(2) 推荐(1) 编辑

ADO.NET知识学习总结
摘要:1. 概述 使用的命名空间: System.Data.SqlClient 连接字符串 服务器/数据库实例+数据库名称+安全信息+用户名+密码 可参考http://www.connectionstrings.com2. 常用类 ( 1) SqlConnection类 1). 处理连接相关事项 2). 实现了IDisposable接口,因此使用完之后资源要释放 一般使用 using语句资源管理机制 或 try-catch-finally。 类似的类型还有 FileStream 类型。 conn.Close()方法 只关闭连接而不释放,仍可再次打开 conn.Dispose(bool)方法 完成释放 阅读全文

posted @ 2012-02-25 23:04 _eagle 阅读(303) 评论(0) 推荐(1) 编辑

你必须知道的ADO.NET(五) 细说数据库连接池
摘要:题外话通过前几章的学习,不知道大家对ADO.NET有一定的了解了没有。撇开文章质量不讲,必须肯定的是,我是用心去写每一篇文章的。无论是是在排版上,还是在内容选取上我都花了不少心思。我希望通过本系列文章,无论是新手还是老手,在ADO.NET上都能有所收获。如果大家觉得有帮助,我希望能得到您的推荐和关注,让我知道您对我的肯定。如果大家觉得我写的不好,我也很乐意听取批评的意见,让我们一起进步。摘要今天我要讲的是数据库连接池。说实话,我表示鸭梨很大。因为相比其他章节来说,连接池相对来说难理解一点。我要用最通俗的语句给大家讲明白,讲透彻却也不是一件很容易的事。但是,连接池又是非常重要的知识点,特别是在部 阅读全文

posted @ 2012-02-25 13:04 _eagle 阅读(327) 评论(1) 推荐(0) 编辑

你必须知道的ADO.NET(四) 品味Connection对象
摘要:摘要前几篇文章,我都没有详细讲解Data Provider核心对象,因为我希望在讲解这些对象之前,让大家对一些基础的概念有很好的认识。在上一篇文章《你必须知道的ADO.NET(三) 连接字符串,你小觑了吗》中,我详细讲解了连接字符串,相信大家都和我一样意识到它的重要性了。如果说连接字符串是打开数据源大门的钥匙,那么我今天要讲解的则是如何用这把钥匙打开数据源的大门。作为Data Provider的第一核心对象,Connection对象肩负起连接数据源的重任。下面就让我们好好认识这位重量级人物吧!目录理解Connection对象必须掌握的几个方法必须掌握的几个属性说说ConnectionState 阅读全文

posted @ 2012-02-25 12:55 _eagle 阅读(257) 评论(0) 推荐(0) 编辑

你必须知道的ADO.NET(三) 连接字符串,你小觑了吗?
摘要:摘要 ADO.NET强大的优势在于对不同的数据源提供一致的访问。在上一篇文章《你必须知道的ADO.NET(二)了解.NET数据提供程序》中,我们知道.NET对不同数据源,使用不同的数据提供程序,这使得我们可以更高效的访问相应的数据源。除了.NET数据提供程序外,我还得说说另外一位功臣:连接字符串(Connection Strings),它也为ADO.NET在解决“不同”与“一致”的矛盾中,贡献出了非常重要的力量。目录什么是连接字符串?理解语法格式例举几种典型连接字符串如何构造连接字符串?在配置文件中存储连接字符串1. 什么是连接字符串? 我们已经知道,ADO.NET类库为不同的外部数据源提供了 阅读全文

posted @ 2012-02-25 12:51 _eagle 阅读(306) 评论(0) 推荐(0) 编辑

你必须知道的ADO.NET(二)了解.NET数据提供程序
摘要:摘要 在上一篇文章《你必须知道的ADO.NET(一) 初识ADO.NET》中,我们知道ADO.NET的两大核心组件分别是Data Provider和DataSet。如果说DataSet是ADO.NET的心脏,那么Data Provider绝对是ADO.NET的左臂右膀。Data Provider提供了访问外部数据数据源的可能性,而且外部的数据源是多样的。本文将详细说明.NET数据提供程序的作用以及如何访问不同的数据源。目录什么是.NET数据提供程序?.NET数据提供程序的核心对象其他重要的对象理解.NET数据提供程序选择合适的.NET数据提供程序1. 什么是.NET数据提供程序? .NET F 阅读全文

posted @ 2012-02-25 12:44 _eagle 阅读(266) 评论(0) 推荐(0) 编辑

你必须知道的ADO.NET(一) 初识ADO.NET
摘要:摘要作为.NET框架最重要的组件之一,ADO.NET扮演着应用程序与数据交互的重要的角色。本文将从宏观的角度来探讨ADO.NET,和大家一起了解ADO.NET来龙去脉以及ADO.NET的主要组成部分。目录什么是ADO.NET?理清ADO.NET与ADO的关系认识ADO.NET最核心的组成部分ADO.NET扩展1. 什么是ADO.NET? 简单的讲,ADO.NET是一组允许.NET开发人员使用标准的,结构化的,甚至无连接的方式与数据交互的技术。对于ADO.NET来说,可以处理数据源是多样的。可以是应用程序唯一使用的创建在内存中数据,也可以是与应用程序分离,存储在存储区域的数据(如文本文件、XML 阅读全文

posted @ 2012-02-25 12:37 _eagle 阅读(275) 评论(0) 推荐(0) 编辑

C#基础加强三:Dispose() 和 Close() 和 Finalize() 的区别
摘要:.net内存回收与Dispose﹐Close﹐Finalize方法一. net的对象使用一般分为三种情况﹕1.创建对象2.使用对象3.释放对象二.创建对象1.创建对象实际分为两个步骤﹕变量类型宣告和初始化对象2.变量类型宣告(declare),如﹕FileStreamfs这行代码会在当前的变量作用域空间(栈或堆)里建立一个叫做fs的变量﹐至少四个字节吧(因为要存一个对象的地址)3.初始化对象对象在使用(调用其方法或属性)前﹐必须进行初始化。如﹕fs=newFileStream(@"C:\test.txt",FileMode.OpenOrCreate);这行代码会分成3个步骤 阅读全文

posted @ 2012-02-24 23:22 _eagle 阅读(3983) 评论(3) 推荐(1) 编辑

C#基础加强二:const和readonly深入研究
摘要:readonly和const都是用来标识常量的[1]。const可用于修饰class的field或者一个局部变量(local variable);而readonly仅仅用于修饰class的field。const常量的值必定在编译时就已明确并且恒定的;而readonly常量却有一点不同,那就是其值可以在运行时编译,当然,它也必须遵守作为常量的约束,那就是值必须恒定不变。const常量必须在声明的同时对其进行赋值,并且确保该值在编译时可确定并恒定;而readonly常量则可以根据情况选择在声明的同时对其赋予一个编译时确定并恒定的值,或者将其值的初始化工作交给实例构造函数(instant const 阅读全文

posted @ 2012-02-22 22:50 _eagle 阅读(557) 评论(0) 推荐(0) 编辑

C#基础加强一:Equals()和运算符==区别
摘要:对于值类型,如果对象的值相等,则相等运算符 (==) 返回 true,否则返回 false。对于string 以外的引用类型,如果两个对象引用同一个对象,则 == 返回 true。对于 string 类型,== 比较字符串的值。 ==操作比较的是两个变量的值是否相等。 equals()方法比较的是两个对象的内容是否一致.equals也就是比较引用类型是否是对同一个对象的引用。 对于值类型的比较,这里就不做描述了,下面讨论引用类型的比较:首先我们看一段程序usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSyste 阅读全文

posted @ 2012-02-22 01:14 _eagle 阅读(390) 评论(0) 推荐(0) 编辑

错误异常处理方法
摘要:我们都知道异常可以用 try-catch-finally来捕获并处理异常,这是在程序运行时可以捕获处理的。下面介绍几种开发上常用的错误处理包括:aps.net 异常处理1、页面级错误处理2、应用程序级错误处理3、应用程序配置WinForm应用程序全局异常处理一、asp.net页面级错误处理在单独页面中的错误。可以在page_error事件中添加处理逻辑代码,通过Server.GetLastError()获取当前页面的错误。using System;using System.Collections.Generic;using System.Linq;using System.Web;using 阅读全文

posted @ 2012-02-21 23:46 _eagle 阅读(3095) 评论(0) 推荐(1) 编辑

常见开发调试技巧
摘要:1、设置断点,跟踪调试 在需要断点的地方按F9键,F10逐过程,F11逐语句。ctrl+shift+F9 删除所有断点。条件断点可以设置满足某一条件即命中断点。2、页面跟踪 在页面顶部添加 Trace="true",即启动该页面的跟踪。添加TraceMode="SortByCategory"指令可以根据类别进行排序。前台代码<%@ Page Trace="true" Language="C#" AutoEventWireup="true" CodeBehind="Default. 阅读全文

posted @ 2012-02-21 01:23 _eagle 阅读(481) 评论(0) 推荐(0) 编辑

C#预处理命令
摘要:C#中的预处理指令 作为预处理中的一对:#region name ,#endregion可能是大家使用得最多的,我也常用它来进行代码分块,在一个比较长的cs文件中,这么做确实是一件可以让你使代码更清晰的好办法,VS也自动用这个来包含自动生成的代码,它这么做既可以使开发人员更清晰的查看自己的代码,也开了一个好头,使更多人使用#region。 C#中还有好几对预处理指令,可能大家就用得比较少了。 #define symbol #undef symbol #if symbol [operator symbol2]... #else #elif symbol [operator symbol2] #e 阅读全文

posted @ 2012-02-21 00:48 _eagle 阅读(749) 评论(0) 推荐(1) 编辑

使用委托来减少if..else判断
摘要:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace _13{ public class ClassPeople { public void SayChinese(string name) { Console.WriteLine("你好," + name); } public void SayEnglish(string name) { Co... 阅读全文

posted @ 2012-02-21 00:43 _eagle 阅读(1370) 评论(0) 推荐(1) 编辑

C#类和接口、虚方法和抽象方法及值类型和引用类型的区别
摘要:1.C#类和接口的区别接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念!而类是负责功能的具体实现!在类中也有抽象类的定义,抽象类与接口的区别在于:抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。但接口是一个行为的规范,里面的所有东西都是抽象的!一个类只可以继承一个基类也就是父类,但可以实现多个接口PS:接口除了规范一个行为之外,在具体项目中的实际作用也是十分重要的,在面向对象的设计原则以及设计模式的使用中,无不体现作为一个接口的使用好处,最直接的就是设计原则中OCP(开放封闭原则),我们使用接口,而不需要关心他的具体实现,具体 阅读全文

posted @ 2012-02-20 23:41 _eagle 阅读(331) 评论(0) 推荐(2) 编辑

字符串常见操作
摘要:字符串常见操作(1)取字符串长度 <string>.Length;(2)字符串转为比特码 GetBytes(<string>)(3)字符串相加 推荐StringBuilder sb = new StringBuilder();sb.Append(<string>);(4)截断字符串的一部分 变量.SubString(起始位置,截取位数);(5)查指定位置是否为空字符 char.IsWhiteSpace(字符串变量,位数);(6)查字符是否是标点符号 char.IsPunctuation(‘字符’);(7)把字符转化为数字,查代码点 (int)’变量’(8)把 阅读全文

posted @ 2012-02-19 21:35 _eagle 阅读(347) 评论(0) 推荐(1) 编辑

创建可以销毁的对象代码段
摘要:创建可以销毁的对象。可以用using包含起来的类Public class MyClass:IDisposable{private bool IsDisposed=false;public void Dispose(){ Dispose(true); GC.SupressFinalize(this);}protected void Dispose(bool Diposing){ if(!IsDisposed) { if(Disposing) { //Clean Up managed resources } //Clean up unmanaged resources}IsDisposed=tru 阅读全文

posted @ 2012-02-19 20:33 _eagle 阅读(268) 评论(0) 推荐(0) 编辑

对象序列化(七):应用实例->asp.net ViewState
摘要:ViewState的使用比较简单,一两句话就可以了。赋值:ViewState[key] = value;取值:value = ViewState[key];最主要的作用就是可以在当前页面保存值,ASP.NET的页面状态维护就是使用ViewState来实现的,基本上每一个ASPX页面都可以看到如下类似的html代码:<inputtype="hidden"name="__VIEWSTATE"id="__VIEWSTATE"value="/wEPDwUKMTkwNjc4NTIwMWRkyv4ncofW5vaWXdXRtXfX 阅读全文

posted @ 2012-02-15 00:29 _eagle 阅读(419) 评论(0) 推荐(0) 编辑

对象序列化(六):应用实例->WPF对象的XAML序列化
摘要:WPF使用XAML来描述用户界面,每个XAML元素往往对应着相应的WPF对象,元素的属性对应着对象的属性。由于XAML元素与WPF对象之前存在着这种对应关系,其实可以将XAML代码看成是WPF对象“序列化”后的结果。WPF提供了XamlWriter 和 XamlReader 两个类实现WPF对象的XAML序列化和反序列化。示例项目:展示了一个绘图板,用户用鼠标点击此绘图板,程序将以随机颜色和大小绘制一个矩形,点击“保存”按钮,当前图形将被保存到磁盘上一个名为“PicData.dat” 的文件中,点击“重建”按钮,将恢复上次保存的图形。前台的XAML代码:<Window x:Class=& 阅读全文

posted @ 2012-02-15 00:07 _eagle 阅读(2819) 评论(1) 推荐(2) 编辑

对象序列化(六):应用实例->程序退出时保存状态
摘要:应用序列化技术的一个典型开发场景就是保存应用程序的当前状态,它允许用户暂时中断当前的工作,关闭程序退出,下次重新启动程序时自动恢复上次的工作状态。示例:保存窗体颜色和位置的对象:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Drawing;namespace SaveFormStatus{ [Serializable] public class FormStatus { public Color BackgroundCo... 阅读全文

posted @ 2012-02-14 23:54 _eagle 阅读(444) 评论(0) 推荐(0) 编辑

对象序列化(五):应用实例->大批量复制对象
摘要:本日记介绍序列化技术在实际开发中的用武之地。在了解了对象序列化与反序列化的方法之后,自然想到可以使用它来实现对象复制。当序列化技术用于对象复制时,我们不将其序列化到文件中,而是将其序列化到内存流中,通过反序列化即可“批量克隆”大量的对象。示例:using System;using System.Collections.Generic;using System.Text;using System.Runtime.Serialization.Formatters.Binary;using System.Runtime.Serialization;using System.IO;namespace 阅读全文

posted @ 2012-02-14 23:50 _eagle 阅读(704) 评论(0) 推荐(0) 编辑

对象序列化(四):多对象序列化
摘要:前几个日记都是介绍单个对象序列化的,其实,可以在序列化过程中向流连续写入多个对象。继续前面的示例,如果是多个学生对象//学生对象private List<CollegeStudent> stus = new List<CollegeStudent>();需要保存数据时,将集合中的对象序列化到文件中://将学生清单序列化到文件中 private void SerializeStudentList(String FileName, List<CollegeStudent> stus) { using (FileStream writer = new FileSt 阅读全文

posted @ 2012-02-14 23:36 _eagle 阅读(524) 评论(0) 推荐(0) 编辑

对象序列化(三):控制序列化过程
摘要:接着上一节的内容,有时候我们在对象中,并不是所有的字段需要序列化。示例:以下是这个窗体需要用到的实体类using System;using System.Collections.Generic;using System.Text;using System.Runtime.Serialization;using System.Collections;namespace MutliObjectSerialization2{ [Serializable] class CollegeStudent:IDeserializationCallback { public St... 阅读全文

posted @ 2012-02-14 23:18 _eagle 阅读(461) 评论(0) 推荐(0) 编辑

对象序列化(二):对象的序列化与反序列化
摘要:.NET框架提供了三种序列化的方式:1、是使用BinaryFormatter进行序列化;2、使用SoapFormatter进行序列化;3、使用XmlSerializer进行序列化。第一种方式提供了一个简单的二进制数据流以及某些附加的类型信息,而第二种将数据流格式化为XML存储;第三种其实和第二种差不多也是XML的格式存储,只不过比第二种的XML格式要简化很多(去掉了SOAP特有的额外信息)。简单的说,第一种是将对象的数据看成是二进制的数据而直接写入流中,称为“二进制序列化”,第二种和第三种是将对象数据用XML方式表示之后再经纯文本的方式写入流中,称为“XML序列化”。.net提供了两种“数据格 阅读全文

posted @ 2012-02-14 22:36 _eagle 阅读(793) 评论(0) 推荐(0) 编辑

对象序列化(一):序列化概念与流
摘要:对象的序列化主要解决的是对象状态的保存问题。这里所说的“对象状态”,其实就是指某一时刻对象所拥有的各个字段值的集合。序列化最主要的作用有:1、在进程下次启动时读取上次保存的对象的信息 2、在不同的AppDomain或进程之间传递数据 3、在分布式应用系统中传递数据......一、对象序列化的概念我们的程序运行在内存空间中,因此程序一关闭,这些对象也都会被CLR的垃圾回收机制销毁。程序第二次程序时,又重头来过。如果希望第二次运行程序时能“重现"第一次运行时的“场景”,即恢复第一次运行时各个对象的状态,应用程序就必须采用某种方法将对象各个字段的值保存到磁盘文件中,这样在需要时可以从磁盘文 阅读全文

posted @ 2012-02-12 23:42 _eagle 阅读(1973) 评论(0) 推荐(0) 编辑

对象的复制:浅复制与深复制和ICloneable接口
摘要:所谓的“对象的复制” 即生成一个与指定对象“一模一样”的“同胞兄弟”。对于对象的复制,有浅复制与深复制两种情况。1、 浅复制:是指当对象的字段值被复制时,字段引用的对象不会被复制。例如,如果一个对象有一个指向字符串的字段,并且我们对该对象做了一个浅复制,那麽两个对象将引用同一个字符串。2、 深复制:是对对象事例中字段引用的对象也进行复制的一种方式。 例如,如果一个对象有一个指向字符串的字段,并且对该对象做了一个深复制的话.我门将创建一个新的对象和一个新的字符串.新对象将指向新字符串。3、.NET中默认的对象复制方式为浅复制,我们可以通过两种方式实现深复制。 A、类实现Icloneable接口。 阅读全文

posted @ 2012-02-12 23:12 _eagle 阅读(679) 评论(0) 推荐(0) 编辑

点滴积累(持续更新)
摘要:1、使用关键字readonly ,表示这个字段只能在执行构造函数的过程中赋值,或者由初始化语句赋值2、.net4.0新增一个 Tuple 类,代表一个有序的N元组。可以调用Tuple.Create静态方法或使用new 关键字直接创建一个Tuple对象,.net基类库中定义了拥有1-7个泛型参数的泛型Tuple。 作用:可以使用Tuple对象作为方法的返回值。可以很容易地包含多个结果。3、.NET 4.0提供了一个大整数类型 BigInteger (位于System.Numerics中),这个类型可以表示任意大的整数。4、string是引用类型。 但却可以用 "=="来比较串 阅读全文

posted @ 2012-02-07 17:25 _eagle 阅读(381) 评论(0) 推荐(0) 编辑

关于对象集合很常用的方法
摘要:本文涉及:1.对列表中的元素进行“批量类型转换”2.对列表中每个元素的“加工”3.对列表元素的排序4.检测列表中的元素是否满足某个条件5.在列表中查找元素注:上述的操作并不是针对数组,或者List..而是有通用性,一般实现了IEnumerable<T>接口的列表都可具有下面的方法。一、对列表中的元素进行“批量类型转换”在某些情况下可能会需要将列表中的所有元素转换为另一个类型,这个工作可以通过调用 ConvertAll 方法实现。public List<TOutput> ConvertAll<TOutput>( Converter<T, TOutput& 阅读全文

posted @ 2012-02-07 17:18 _eagle 阅读(825) 评论(0) 推荐(0) 编辑

详解.NET 4.0数组的相关新增功能
摘要:本文内容包括:使用.NET 4.0 新增的接口:1、比较两个数组是否相等2、比较两个数组大小。在.NET 4.0中我们将看到数组方面有很大的改进,本文将给大家讨论的是.NET 4.0数组的新增功能,希望对大家用好.NET 4.0数组有所帮助。1 两数组是否“相等”?在实际开发中,有时我们需要比对两个数组是否拥有一致的元素,例如,以下两个数组由于拥有相同的元素,因此被认为是相等的:int[] arr1 = new int[] { 1,2,3,4 }; int[] arr2 = new int[] { 1,2,3,4 }; 在.NET早期版本中,要实现上述数组比对功能,必须自己动手编... 阅读全文

posted @ 2012-02-06 15:44 _eagle 阅读(254) 评论(0) 推荐(1) 编辑

对象的比较与排序(七):对泛型列表进行排序和搜索:Comparison<T>和Predicate<T>的应用
摘要:前面说到,我们可以使用 IComparer<T> 和 IComparable<T> 接口比较两个对象,然后对该类型的对象列表排序。现在我们来介绍另两个委托可以来用排序和搜索列表先总结一下前面的内容:MSDN上List有如下的sort重载:如果调用无参的sort()方法,那么要求集合中的元素要实现 System.IComparable 接口,否则此方法会抛出InvalidOperationException异常。如果集合的元素没有实现IComparable接口,则可以调用Sort(IComparer<T>),这时我们要创建一个类实现IComparer接口作为比 阅读全文

posted @ 2012-02-03 17:07 _eagle 阅读(1380) 评论(0) 推荐(0) 编辑

对象的比较与排序(六):实现集合类Sort自定义排序
摘要:转自http://www.cnblogs.com/anytao/archive/2009/04/12/anytao_devstory_03_customcomparison.html对集合元素进行排序是经常发生的事情,事实上大部分的集合类型都默认实现了Sort方法,进行其元素的排序操作。例如List<T>集合的Sort方法有:public void Sort();public void Sort(Comparison<T> comparison);public void Sort(IComparer<T> comparer);public void Sort 阅读全文

posted @ 2012-02-03 17:03 _eagle 阅读(1382) 评论(0) 推荐(0) 编辑

对象的比较与排序(五):C#运算符重载
摘要:c#里的运算符重载是个不常出现的应用,同时也是个好玩的东西。我们可以使用他来实现这样的需求:当一个订单与另外一个订单相加形成一个新的订单。新订单的货物为两个订单的货物的并集,总价为两个订单的总价和。下面实现看看先做个辅助的货物类publicclassMerchandise{publicintCount{get;set;}publicstringName{get;set;}publicdoubleUnitPrice{get;set;}}然后来实现订单类publicclassOrder{publicdoubleTotalPrices{get;set;}publicList<Merchandi 阅读全文

posted @ 2012-02-03 16:59 _eagle 阅读(527) 评论(0) 推荐(0) 编辑

对象的比较与排序(四):对象的相等判断Equals和IEquatable<T>
摘要:本节覆盖了以下知识点:一、Object.Equals()方法;二、“==”,“!=”运算符重载;三、IEquatable<T> 接口。一、重写Equals方法。众所周知,Object类型有一个名为Equals的实例方法可以用来确定两个对象是否相等。Object的Equals的默认实现比较的是两个对象的引用等同性。而Object的派生类ValueTpye重写了Equals方法,它比较的是两个对象的逻辑等同性。也就是说,在C#里,引用类型的默认Equals版本关注的是引用等同性,而值类型关注的是逻辑等同性。当然,这并不总能满足我们的要求。所以每当我们更在意引用类型的逻辑等同性的时候,我 阅读全文

posted @ 2012-02-03 16:50 _eagle 阅读(901) 评论(0) 推荐(0) 编辑

对象的比较与排序(三):实现IComparable<T>和IComparer<T>泛型接口
摘要:1:比较和排序的概念 比较:两个实体类之间按>,=,<进行比较。 排序:在集合类中,对集合类中的实体进行排序。排序基于的算法基于实体类提供的比较函数。 基本型别都提供了默认的比较算法,如string提供了按字母进行比较,int提供了按整数大小进行比较。2:IComparable和IComparer 这两个接口上一日记已经介绍过,现在用一实例再次讲解一次 当我们创建了自己的实体类,如Student,默认想要对其按照年龄进行排序,则需要为实体类实现IComparable接口。 class Student:IComparable { public string Name { get; s 阅读全文

posted @ 2012-02-03 00:40 _eagle 阅读(1668) 评论(2) 推荐(0) 编辑

对象的比较与排序(二):实现IComparable和IComparer接口 和 Comparer类
摘要:在默认情况下,对象的Equals(object o)方法(基类Object提供),是比较两个对象变量是否引用同一对象。我们要必须我自己的对象,必须自己定义对象比较方式。IComparable和ICompare 接口是.net framework中比较对象的标准方式,这两个接口之间的区别如下:1. IComparable 在要比较的对象的类中实现,可以比较该对象和另一个对象。2.IComparer 在一个单独的类中实现,可以比较任意两个对象。一般情况下,我们使用 IComparable 给出类的默认比较代码,使用其他类给出非默认的比较代码。一、IComparable提供了一个方法int Comp 阅读全文

posted @ 2012-02-03 00:22 _eagle 阅读(1214) 评论(0) 推荐(0) 编辑

对象的比较与排序(一):类型比较和值比较
摘要:一。类型比较1.GetType() 方法,所有的类都从system.object 中继承了这个方法,这个方法和typeof()运算符一起使用,就可以确定对象的类型if(myObj.GetType()) == typeof(MyClass){ //myObj是对象名,MyClass是一个类名}2. is运算符(平时用得多,不再叙述)二。值比较1.运算符重载2.使用 IComparable 和 IComparer 接口。它们可以用标准的方式定义比较对象的过程。也是对集合中的对象排序的一种绝佳方式。接下来的两篇日记会详细说明 运算符重载 和 IComparable 、 IComparer 接口 阅读全文

posted @ 2012-02-02 23:59 _eagle 阅读(646) 评论(0) 推荐(0) 编辑

异步编程模式(六):基于事件的异步调用模式
摘要:前一个日记介绍了以 WebResponse 为代表的支持IAsyncResult 异步调用模式的组件,.NET基类库中有部分组件实现 了另一种异步模式,这就是"基于事件的异步模式(EAP模式)"。实现 了EAP模式的最典型组件是WebClient。WebClient定义了以下两个同步方法用于从WEB上下载文件:public void DownloadFile(string address, string fileName);public void DownloadFile(Uri address, string fileName);为了实现异步调用,WebClient又定义 阅读全文

posted @ 2012-02-01 15:06 _eagle 阅读(2427) 评论(1) 推荐(3) 编辑

异步编程模式(五):实现 IAsyncResult 异步调用模式的组件
摘要:在.net 基类型库中,有一些现有的组件直接实现了 IAsyncResult 异步调用设计模式,这些组件通常同时提供某个方法的同步与异步调用形式。以system.net 命名空间中的 WebRequest 为例,如上图所示:有以下规律。1.凡有一个 "BeginXXX"的,一定有一个"EndXXX"方法相对应。2.每组"BeginXXX / EndXXX",一定有一个对应的 "XXX"方法。3."EndXXX" 方法与对应的同步方法 "XXX"的返回值类型相同。注意一下&qu 阅读全文

posted @ 2012-02-01 13:52 _eagle 阅读(595) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示