代码改变世界

随笔档案-2011年4月22日

转大白话系列之C#委托与事件讲解大结局

2011-04-22 17:58 by 沐海, 232 阅读, 收藏,
摘要: 今天是大白话系列之C#委托与事件讲解的大结局,也是我们最关心的,在日常的MES系统编程中到底怎样使用这样的利器,其实我们每天都在使用事件,一个窗体,一个按钮都包含这事件,只是很少用到自己写的委托和事件,说白了不知道如何下手,也不知道在什么样的场景下应用。用到事件的地方有很多,这次讲解就MES系统开发中我们经常应用的场景。一、通用控件场景通用控件有很多,这里举最常用的万能通用分页控件【注:】本分页控件,只是为了讲解使用,并非真分页控件,还是基于.net控件的分页我们先来看场景我们所看到的这个分页控件就是这次讲解的主角,在日常的编程中,像这样功能我们用的做多,所以我们必须要把它抽象出来,不能每个页 阅读全文

转大白话系列之C#委托与事件讲解(三)

2011-04-22 17:57 by 沐海, 247 阅读, 收藏,
摘要: [我希望大家在看完文章的时候,多做做练习,自己也可以想个场景,动动手,这样才会有深刻的印象,不然遗忘的速度非常快]今天我接着上面的3篇文章来讲一下,为什么我们在日常的编程活动中遇到这么多sender,EventArgs e 参数:protected void Page_Load(object sender, EventArgs e){}protected void btnSearch_Click(object sender, ImageClickEventArgs e){}protected void grdBill_RowDataBound(object sender, GridViewRo 阅读全文

转大白话系列之C#委托与事件讲解(二)

2011-04-22 17:56 by 沐海, 260 阅读, 收藏,
摘要: 什么是事件?EVENT?点击事件?加载事件?一连串的模糊的概念冲击着我们弱小的脑袋那我们首先来看一下比较正统的感念吧:事件是类在发生其关注的事情时用来提供通知的一种方式。事件的发生一般都牵扯2个角色事件发行者(Publisher):一个事件的发行者,也称作是发送者(sender),其实就是个对象,这个对象会自行维护本身的状态信息,当本身状态信息变动时,便触发一个事件,并通知说有的事件订阅者。事件订阅者(Subscriber):对事件感兴趣的对象,也称为Receiver,可以注册感兴趣的事件,在事件发行者触发一个事件后,会自动执行这段代码。为了更好的让大家理解上面的概念,我先什么都不讲,我们先来 阅读全文

转大白话系列之C#委托与事件讲解(序言)

2011-04-22 17:55 by 沐海, 220 阅读, 收藏,
摘要: 在讲委托,事件之前,我想问大家一个非常简单的问题,也许在我们日常的编程中基本上每天都会遇到,但是却往往不去了解的地方,请以下代码:protected void Page_Load(object sender, EventArgs e){}protected void btnSearch_Click(object sender, ImageClickEventArgs e){}protected void grdBill_RowDataBound(object sender, GridViewRowEventArgs e){ }protected void grdBill_RowDeleting 阅读全文

转大白话系列之C#委托与事件讲解(一)

2011-04-22 17:55 by 沐海, 234 阅读, 收藏,
摘要: 从序言中,大家应该对委托和事件的重要性有点了解了吧,虽然说我们现在还是能模糊,但是从我的大白话系列中,我会把这些概念说的通俗易懂的。首先,我们还是先说说委托吧,从字面上理解,只要是中国人应该都知道这个意思,除非委托2个中文字不认识,举个例子,小明委托小张去买车票。 但是在我们的程序世界里,也是这么的简单吗?当然,什么是OO,OO就是现实世界的抽象,所有现实世界的事物,在OO里都能得到很好的诠释,不好意思,扯远了......那我们就单刀直入吧,如果同学们不嫌烦的话,可以看一下,网上中文,英文的那个GreetingPeople例子。 首先是C#语法Code highlighting produce 阅读全文

事件和委托的编译代码

2011-04-22 17:40 by 沐海, 255 阅读, 收藏,
摘要: 这时候,我们不得不注释掉编译错误的行,然后重新进行编译,再借助Reflactor来对 event的声明语句做一探究,看看为什么会发生这样的错误:public event GreetingDelegate MakeGreet;可以看到,实际上尽管我们在GreetingManager里将 MakeGreet 声明为public,但是,实际上MakeGreet会被编译成 私有字段,难怪会发生上面的编译错误了,因为它根本就不允许在GreetingManager类的外面以赋值的方式访问。我们进一步看下MakeGreet所产生的代码:现在已经很明确了:MakeGreet 事件确实是一个GreetingDe 阅读全文

我比较笨《委托》(四) 事件的由来

2011-04-22 17:39 by 沐海, 264 阅读, 收藏,
摘要: 事件的由来我们继续思考上面的程序:上面的三个方法都定义在Programe类中,这样做是为了理解的方便,实际应用中,通常都是 GreetPeople 在一个类中,ChineseGreeting和 EnglishGreeting 在另外的类中。现在你已经对委托有了初步了解,是时候对上面的例子做个改进了。假设我们将GreetingPeople()放在一个叫GreetingManager的类中,那么新程序应该是这个样子的:namespace Delegate { //定义委托,它定义了可以代表的方法的类型 public delegate void GreetingDelegate(string nam 阅读全文

我比较笨系列2.《委托》将方法绑定到委托

2011-04-22 17:32 by 沐海, 229 阅读, 收藏,
摘要: 将方法绑定到委托看到这里,是不是有那么点如梦初醒的感觉?于是,你是不是在想:在上面的例子中,我不一定要直接在GreetPeople()方法中给 name参数赋值,我可以像这样使用变量:而既然委托GreetingDelegate 和 类型 string 的地位一样,都是定义了一种参数类型,那么,我是不是也可以这么使用委托?如你所料,这样是没有问题的,程序一如预料的那样输出。这里,我想说的是委托不同于string的一个特性:可以将多个方法赋给同一个委托,或者叫将多个方法绑定到同一个委托,当调用这个委托的时候,将依次调用其所绑定的方法。在这个例子中,语法如下:输出为:Morning, Jimmy Z 阅读全文

我比较笨系列 《委托 》(三)事件

2011-04-22 17:32 by 沐海, 180 阅读, 收藏,
摘要: 事件的由来我们继续思考上面的程序:上面的三个方法都定义在Programe类中,这样做是为了理解的方便,实际应用中,通常都是 GreetPeople 在一个类中,ChineseGreeting和 EnglishGreeting 在另外的类中。现在你已经对委托有了初步了解,是时候对上面的例子做个改进了。假设我们将GreetingPeople()放在一个叫GreetingManager的类中,那么新程序应该是这个样子的:namespace Delegate { //定义委托,它定义了可以代表的方法的类型 public delegate void GreetingDelegate(string nam 阅读全文

我比较笨系列 《委托 》(一) 将方法作为方法的参数

2011-04-22 17:29 by 沐海, 352 阅读, 收藏,
摘要: 引言委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。将方法作为方法的参数我们先不管这个标题如何的绕口,也不管委托究竟是个什么东西,来看下面这两个最简单的方法,它们不过是在屏幕上输出一句问 阅读全文

托管资源

2011-04-22 16:16 by 沐海, 220 阅读, 收藏,
摘要: c#托管资源和非托管资源区别c#托管资源和非托管资源区别托管的概念是在.net框架诞生后出现的。用比较通俗的话解释就是运行在.net框架下,并受.net框架管理的应用或其他组件称为托管的,反之为非托管的。 也就是说用.net平台开发出来的程序应该就是托管的了,而在.net以前开发的程序都属于非托管的。但是非托管的程序完全可以通过在.net平台下重新生成而变成托管的 ,你就把.net framework理解为一个Microsoft的Java Virtual Machine,这样,东西在上面跑,完全受控,这就是managed code。http://www.cnblogs.com/xianspac 阅读全文

using

2011-04-22 16:05 by 沐海, 366 阅读, 收藏,
摘要: using 语句(C# 参考)Visual Studio 2005 外释放一个或多个对象。语法复制 using (Font font1 = new Font("Arial", 10.0f)){}备注C# 通过 .NET Framework 公共语言运行库 (CLR) 自动释放用于存储不再需要的对象的内存。内存的释放具有不确定性;一旦 CLR 决定执行垃圾回收,就会释放内存。但是,通常最好尽快释放诸如文件句柄和网络连接这样的有限资源。 using 语句允许程序员指定使用资源的对象应当何时释放资源。为 using 语句提供的对象必须实现 IDisposable 接口。此接口提供 阅读全文
记录生活、工作、学习点滴!
E-Mail:mahaisong@hotmail.com 欢迎大家讨论。
沐海博客园,我有一颗,卓越的心!