代码改变世界

随笔分类 -  C#本质论

static生命周期

2011-10-13 18:57 by 沐海, 5201 阅读, 收藏, 编辑
摘要: 静态变量的类型说明符是static。静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。对于自动变量,它属于动态存储方式。但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式。由此看来,一个变量可由static进行再说明,... 阅读全文

C#: +(特性 ) + Attitude C#(类)前面或者(方法)前面 (中括号)定义

2011-07-18 20:30 by 沐海, 6665 阅读, 收藏, 编辑
摘要: 系列文章索引:《白话C#》首先要说的是,可能一些刚接触C#的朋友常常容易把属性(Property)跟特性(Attribute)弄混淆,其实这是两种不同的东西。属性就是面向对象思想里所说的封装在类里面的数据字段,其形式为: 1: public class HumanBase 2: { 3: public string Name { get; set; } 4: public int Age { get; set; } 5: public int Gender { get; set; } 6: }在HumanBase这个类里出现的字段都叫属性(Pro... 阅读全文

属性(Properties)和字段在C#中的关系

2011-07-05 15:38 by 沐海, 529 阅读, 收藏, 编辑
摘要: 主题:这篇文章我来说下属性(Properties)和字段在C#中的关系。首先申明一下,这里讲的属性就是通常说的包含get,或者是set访问器的属性,不是属性 (Attribute)。我们写程序的时候大多都会用到实体类,而生成实体类,我们都会申明一些常规属性或者是自动实现的属性。至于到底选用哪一种属性,或者说是否可以直接用字段代替呢? 常规属性(带有私有字段)和自动实现属性的区别: 一个完整的常规属性由以下几部分构成: 1:私有字段,用来存储变量(后备存储),这个字段之所以是私有的,是为了让它只能通过属性来赋值。private string _sName; 2:一个get访问器,它负责读取数据. 阅读全文

严重总结委托与事件 如下:

2011-04-25 10:27 by 沐海, 918 阅读, 收藏, 编辑
摘要: 事件是类在发生其关注的事情时用来提供通知的一种方式。和JAVA 的监听器原理类似。事件就像是JAVA监听器监听到指定的响应后,所执行的具体的监听响应函数。事件的发生一般都牵扯2个角色事件发行者(Publisher):一个事件的发行者,也称作是发送者(sender),其实就是个对象,这个对象会自行维护本身的状态信息,当本身状态信息变动时,便触发一个事件,并通知所有的事件订阅者。监听器监听的事件。此事件发生,则触发订阅者。事件订阅者(Subscriber):对事件感兴趣的对象,也称为Receiver,可以注册感兴趣的事件,在事件发行者触发一个事件后,会自动执行这段代码。监听器指定的执行事件。作为事 阅读全文

委托C# 生活 实例

2011-04-25 08:35 by 沐海, 326 阅读, 收藏, 编辑
摘要: 现实中的例子:比如说一个公司(场景),你是老板,手下有两个员工,小张和小王。你命令小王,如果小张玩游戏,则小王扣去小张500元钱。这就是现实中的委托。实际上,在写程序中,程序员就是老板,小张和小王就是两个对象。小张玩游戏是一个方法,小张还有一个游戏事件,他玩游戏激发这个事件。而小王就是事件处理对象,他负责把小张的钱扣除500。所以,委托有如下几个要素:1 激发事件的对象--就是小张2 处理对象事件的对象--就是小王3 定义委托,就是你让小王监视小张。如果这三个要素都满足的话,则你就写出了一个完整事件的处理。下面有个例子:在vs.net2003 C#控制台应用程序编辑运行成功:using Sys 阅读全文

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

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

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

2011-04-22 17:57 by 沐海, 240 阅读, 收藏, 编辑
摘要: [我希望大家在看完文章的时候,多做做练习,自己也可以想个场景,动动手,这样才会有深刻的印象,不然遗忘的速度非常快]今天我接着上面的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 沐海, 246 阅读, 收藏, 编辑
摘要: 什么是事件?EVENT?点击事件?加载事件?一连串的模糊的概念冲击着我们弱小的脑袋那我们首先来看一下比较正统的感念吧:事件是类在发生其关注的事情时用来提供通知的一种方式。事件的发生一般都牵扯2个角色事件发行者(Publisher):一个事件的发行者,也称作是发送者(sender),其实就是个对象,这个对象会自行维护本身的状态信息,当本身状态信息变动时,便触发一个事件,并通知说有的事件订阅者。事件订阅者(Subscriber):对事件感兴趣的对象,也称为Receiver,可以注册感兴趣的事件,在事件发行者触发一个事件后,会自动执行这段代码。为了更好的让大家理解上面的概念,我先什么都不讲,我们先来 阅读全文

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

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

事件和委托的编译代码

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

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

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

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

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

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

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

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

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