随笔分类 -  .NetFramerwork

摘要:我们一直所认为的事件就是点击按钮,然后就会触发我们在处理程序里面的代码。那么这一切到底是怎么发生的呢?我们能不能定义我们的自己的事件引起对象或者逻辑。当然可以,我们先来看看现实世界中的事件。比如老师上课的时候提出一个问题,其实就是一个事件,事件的发起方就是老师,而接受方就是回答问题的学生。事件数据就是老师的问题。所谓的时间数据就是我们可以从老师的问题中得到的信息。而到程序中呢,我们就以点击按钮为例。这里按钮就是发起事件的对象,而我们在处理程序里面的代码就是事件接收方。我们得到的鼠标的信息就是事件的数据。再具体一点。我们来解析一下事件是怎么发生的。这里我们来给事件做一个定义 事件是对象发送... 阅读全文
posted @ 2011-12-28 02:11 刘中栋 阅读(1686) 评论(3) 推荐(1)
摘要:从2.0起我们一直就在谈论泛型,那么什么是泛型,泛型有什么好处,与泛型相关的概念又该怎么使用,比如泛型方法,泛型委托。这一篇我会全面的介绍泛型。 那么首先我们必须搞清楚什么是泛型,泛型其实也是一种类型,跟我们使用的int,string一样都是.net的类型。泛型其实就是一个模板类型,万能类型。它允许我们在设计类的时候使用一个类型空白。预留一个类型。等到我们使用这个类的时候,我们可以使用特定的类型来替换掉我们预留的这个类型。这就是泛型。 那么这样使用的好处有什么呢? 1,类型安全性 2,性能提高 3,代码重用 4,扩展性 为什么会有这几个好处,我们来解析一下。 在我们讨论泛型... 阅读全文
posted @ 2011-11-24 22:21 刘中栋 阅读(8842) 评论(5) 推荐(7)
摘要:在.net中有几种比较相等的方法 object的静态ReferenceEquals() object的静态Equals() object的示例Equals() 运算符== 下面介绍一下他们的区别和用法。 ReferenceEquals ReferenceEquals用于比较引用类型的引用是是否指向同一个对象。它只能比较引用类型。当把值类型传给它的时候永远都会返回false,因为值类型作为参数的时候首先会装箱,经过装箱的值类型哪怕是指相等,但是也是两个不同的对象,所以变量是指向不同的对象,所以永远返回false。 int x = 10; ... 阅读全文
posted @ 2011-11-15 08:40 刘中栋 阅读(2970) 评论(9) 推荐(5)
摘要:其实我正则表达式我正在学习,所以这里不过多的介绍正则,等我学到有一定的心得之后再介绍正则。这里我只是介绍在.netframerwork中怎么使用正则。 要在framerwork中使用正则,需要导入命名空间System.Text.RegularExpressions,类Regex可以提供正则的一些功能,这里的正则介绍得计较简单。等以后我再详细的介绍正则表达式和.netframerwork中正则的一些信息。 我们首先来看一个例子。电子邮件的验证,这次用的Winfrom,界面很简单一个一个文本框,一个按钮,按钮里面的逻辑验证输入的是否符合电子邮件的格式。 验证按钮里面的逻辑也是很简单的 p... 阅读全文
posted @ 2011-11-15 01:05 刘中栋 阅读(186) 评论(0) 推荐(0)
摘要:我们不管学习任何语言,字符串可以说是用得最多的对象之一。字符串在很多人看是很简单的,但是就算是简单我这里也系统的概括一下。 这里我要介绍两点 1,怎么样使用字符串 2,字符串的格式化 首先我们看看怎么使用字符串 字符串的使用相信大家都很清楚,定义,赋值都是很简单的。string oString = "EdrickLiu"; 但是这里我们要清楚这么一行代码的实际含义。首先string实际上是System.String的等量声明,这里我们实际上是声明了一个System.String类型的引用。oString引用指向托管堆上的一个String实例。所以string是引用类型。这里 阅读全文
posted @ 2011-11-14 07:06 刘中栋 阅读(423) 评论(0) 推荐(2)
摘要:在C#中,我们有各种预定义的类型可以使用,比如int,int实际上是System.Int32的一个实例。它的取值有一个范围。如果我们的int从某个地方接收到一个null,比如数据库,或者任何其他地方。那么赋值肯定会失败。而且会产生编译错误或者运行时错误。当然我们可以处理这样的异常或者做一个些防范。但是我们有一种更好的选择,就是让我们的基本数据类型除了可以取正常范围的值之外还能为null,这样就不会产生异常,我们只需要在要使用这个值的时候检测一下值是否非空就可以使用了。那么这个类型就是System.Nullable<T>.简写为T?.T为我们要使用的类型,但是不能为引用类型,事实上也 阅读全文
posted @ 2011-11-13 03:35 刘中栋 阅读(2949) 评论(0) 推荐(0)
摘要:关于C#的基本运算符其实不需要介绍太多,但是这里还是有几个值得我们注意一下的运算符,多的先不说,先贴上C#中所有的运算符 其中的sizeof和寻址运算符我们不需要了解但多,因为CLR帮我们做了,.netframerwork是类型安全的。 下面介绍几个我们需要注意的运算符。 增量运算符和减量运算符 ++,-- 我们来看一个例子,X++和++X的区别 X++和++X可以用做表达式,那么什么是表达式,表达式就是可以计算且结果为单个值、对象、方法或命名空间的代码片段,也可以用作代码块。当用作代码块的时候,就是他们单独占一行的时候,X++跟++X的效果是一样的,都是X... 阅读全文
posted @ 2011-11-10 16:25 刘中栋 阅读(10577) 评论(1) 推荐(2)
摘要:我们可以使用foreach迭代数组,集合。那么为什么数组和集合可以使用foreach迭代而别的类型却不行呢?foreach的内部机制又是什么,这里我来说一下枚举器。 很多教材上说,使用foreach迭代必须满足什么条件,很多人就是一句话,实现IEumerable接口。其实不是完全正确。实现IEumerable接口只是第一步。第二步是要实现GetEumerator()方法,这个方法需要返回IEumerator接口。其实真正起作用的是GetEumerator()和IEumerator接口。原因是,C#中的foreach最后在IL代码中不会编译为foreach,而是会把foreach转化为IE... 阅读全文
posted @ 2011-11-08 19:35 刘中栋 阅读(265) 评论(0) 推荐(0)
摘要:我们可以使用数组来处理一组相同的类型,我们可以根据索引来获取每一个元素。那么既然是这样,我们为什么还要使用索引器呢?我们觉得有以下几点。 1,如果我们的类的意图本身就是想表示现实中的一组事物。本身就是一个群集的概念,那么我们就可以封装数组或集合成为索引器,让我们的类看上去像一个整体概念。这样有助与我们理解类的意图。使我们的类专注于表现群集的概念。这会使我们的类有数组的表现形式。更加形象化。还使其他开发人员能够更加直观地理解类及其用途。 2,使用数组有时候要依托于类里的数组。而索引器却是积极的表现类的意图,可以直接使用类索引 3,我们可以很轻易的使用别的类型来索引我们自己的类,当然数组... 阅读全文
posted @ 2011-11-08 03:31 刘中栋 阅读(289) 评论(0) 推荐(0)
摘要:在.netframerwork中数组是一种数据结构,它包含若干同一类型的元素。就好像我们可以把多个相同类型的若干元素放在一个容器中供我们使用。数组就好像装鸡蛋的格子,里面的元素就好像是鸡蛋。数值数组的默认值为0,引用元素的默认值为null。数组的大小是不可变的,一旦定义了大小就不可变,除非我们克隆出另外一个数组。声明一个数组是很简单的,声明数组,只需要先定义数组中元素的类型,然后后面加一个方括号 int[] arr; 初始化数组也是很简单的,可以有以下的几种方式。 arr = new int[4]; 由于数组是引用类型,所以使用new关键字初始化,然后指定数组的大小。也可以把他们写... 阅读全文
posted @ 2011-11-07 22:22 刘中栋 阅读(389) 评论(0) 推荐(0)
摘要:在介绍序列化的时候我们首先要搞清楚什么是序列化以及为什么要使用序列化。 序列化的官方定义是:将对象状态转换为可保持或可传输的形式的过程。首先,什么是对象状态,对象状态就是对象在某个时刻具有的特征,其实简单一点就是这个对象。那么什么是可保持?我们知道,对象是有生存期的,一旦对象过了生存期我们就无法访问到这个对象。可保持的意思就是打破对象的生存期。使对象具有持久的访问方式。典型的可保持就是我们的磁盘保存了。那么什么是可传输?传输的是意思就是在不同的地点之间传递某个物品。而我们这里就是在不同的程序,组件之间传递某个对象。现在最后一个问题?为什么要使用序列化。其实一个话就可以概述,就是在不同... 阅读全文
posted @ 2011-11-06 15:22 刘中栋 阅读(1350) 评论(0) 推荐(0)
摘要:网上有很多关于委托的定义,MSDN官方给的定义是委托类似于 C++ 函数指针,但它们是类型安全的。委托允许将方法作为参数进行传递。委托可用于定义回调方法。委托可以链接在一起;例如,可以对一个事件调用多个方法。什么是C++函数指针?个人对C++不熟悉,所以理解可能有误,指向一个方法。其实我个人的理解是委托实际上是定义了一个方法规范,类似具有某个规范的方法接口。任何具有此规范的方法都可以用来实例化这个定义规范的委托,实际上我们想执行的还是方法,而委托只是一个中间人,一个规范定义人,那么为什么我们不直接使用方法呢?举两个例子,一个是现实生活中的,一个程序中的1,我们去电影院看电影,买一张票只能看某个 阅读全文
posted @ 2011-10-17 21:50 刘中栋 阅读(301) 评论(0) 推荐(0)