专注

导航

2011年11月13日 #

面向对象技术-泛型

摘要: 泛型在msdn上定义比较难懂。泛型是具有占位符(类型参数)的类、接口、接口和方法,这些占位符是类、接口、结构和方法所存储的一个或多个占位符。泛型集合类可以将类型参数用作他所存储对象的类型的占位符,类型参数作为其字段的类型和其方法的参数类型出现。我们看一个实例:泛型需要添加using System.Collections.Generic的命名空间;而List类是ArrayList类的泛型的等效类,该类使用大小可以按需动态增加的数组是想IList泛型接口。其实用法上关键就是在IList和List后面加<T>,这个T就是你需要指定的集合的类型或对象类型。 1: //关键在这里,... 阅读全文

posted @ 2011-11-13 12:39 陈啊M 阅读(228) 评论(0) 推荐(0) 编辑

面向对象基础-集合

摘要: 我们在动物比赛报名的时候,是这样子做的: 1: private Animal[] arrayAniaml; 2: private void button2_Click(object sender, EventArgs e) 3: { 4: arrayAniaml = new Animal[5]; 5: arrayAniaml[0] = new Cat("mao1"); 6: arrayAniaml[1] = new Dog("... 阅读全文

posted @ 2011-11-13 12:37 陈啊M 阅读(176) 评论(0) 推荐(0) 编辑

面向对象基础-接口

摘要: 在动物比赛中有一个比较特殊的比赛是为了给特异功能的动物展示其特殊的才能的。比如:机器叮当猫,石猴孙悟空,肥猪猪八戒,蜘蛛人等等。 变出东西应该是叮当猫、孙悟空、猪八戒的行为方法,要想用多态,就得让猫、候、猪都有“变出东西(特异功能)”能力,而为了具有普遍意义,干脆让动物都具有“变出东西(特异功能)”等行为,但是,我们发现,不是所有动物都具有“变出东西(特异功能)”的能力。只有Cat/Pig/Monkey有,这个时候,我们就会用到接口。 当然也可以是这样子 还有一种形式 一个类可以支持多个接口,多个类也可以支持相同的接口。所以,我们可以声明一个接口: 1: in... 阅读全文

posted @ 2011-11-13 12:35 陈啊M 阅读(176) 评论(0) 推荐(0) 编辑

面向对象基础-抽象类

摘要: 我们再来观察,其实Animal类其实根本不可能实例化,你想,说一只猫长什么样子,可以想象,但是new Animal(),即实例化一个动物,动物长什么样子,其实是不知道的。同样的道理,Animal中的getShoutSound()方法,也是没有任何含义的,所以,我们可以把virtual修饰符改成abstract,使之成为抽象的方法。C#中允许把类和方法声明为abstract,即抽象类和抽象方法。 1: abstract class Animal 2: { 3: ............... 4: protected abstract string ge... 阅读全文

posted @ 2011-11-13 12:30 陈啊M 阅读(134) 评论(0) 推荐(0) 编辑

面向对象基础-重构

摘要: 动物中如果又有小牛,小羊来报名,需要参加“叫声比赛”,如何办?原始的方法只要继承即可。 但是,我们会发现,Cat、Dog、Bull,Sheep中除了构造方法Shout()之外,几乎没有什么差异。这样子的不好使,比如把shout()中的“我的名字是**”改成“我叫**”,那么四个类都需要改变。这个时候,我们需要这样子做了。我们还是要把Shout()放到Animal类中,但是现在就不是virtual的了。此外,我们还需要添加一个getShoutSound()的方法,表示判断是“喵”还是“旺”。 1: class Animal 2: { 3: .... 阅读全文

posted @ 2011-11-13 12:28 陈啊M 阅读(247) 评论(0) 推荐(0) 编辑

面向对象基础-多态

摘要: 还是动物的例子,如果我们现在要举办一个动物运动会,来参加的有各种各样的动物,其中有个项目是“叫声比赛”。界面上放放两个按钮,一个是“动物报名”,就是确定动物的种类和报名的顺序,一个就是“叫声比赛”,就是报名的动物挨个交出声音来比赛。注意来报名的各种动物,我们不知道,可能是猫,狗.......如何实现?如果按照多态的含义:表示不同的对象可以执行相同的动作,但要通过他们自己的实现代码来执行。为了使子类的实例化完全接替来自父类的类成员,父类必须将该成员声明为虚拟的,这是通过在该成员的返回类型之前添加virtual关键字来实现。子类可以通过override关键字,将父类实现替代为他自己的实现,这就是方 阅读全文

posted @ 2011-11-13 12:25 陈啊M 阅读(234) 评论(0) 推荐(0) 编辑

面向对象基础二-继承

摘要: 一、封装封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。每个对象都包含能进行操作所需要的所有信息,这个特性就是封装,因此对象不必依赖其他对象来完成工作。二、继承对象继承就是is-a的关系。如果子类继承父类,那么(1)子类拥有父类非private的属性和功能;(2)子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能;(3)子类还可以以自己的方式实现父类的功能(方法重写)还是以动物为了,我们如果要创建一个狗叫“旺”的提示框,最原始的做法就是和Cat类几乎一样的创建一个Dog的类,但是,我们发现里面大部分代码都是一样的,所 阅读全文

posted @ 2011-11-13 12:23 陈啊M 阅读(173) 评论(0) 推荐(0) 编辑

面向对象基础一

摘要: 一、类与实例首先我做一个实验,点击一个“猫叫”的按钮,会弹出小猫的叫声“喵”的提示框!这个实在很简单 MessageBox.Show("喵"); 问题一:如果需要点击另外一个按钮,也让他弹出小猫的叫声“喵”的提示框!解决方法:增加一条语句:MessageBox.Show("喵");问题:这样子就会重复了,解决方法:我们需要些一个函数,其他需要的地方直接调用。 1: string Shout() 2: { 3: return "喵"; 4: } 问题:如果别的窗口要用的话,怎么办?解决:public string Shout()但是,S 阅读全文

posted @ 2011-11-13 12:20 陈啊M 阅读(203) 评论(0) 推荐(0) 编辑

asp.net 在使用Response.Redirect try{}catch{}块失效

摘要: 1: try 2: { 3: 4: … 5: Response.Redirect("/mymaimai.aspx"); … 6: } 7: catch (Exception e) 8: { 9: // 异常处理 10: 11: } 使用以上语句,不管是否有异常,都会执行catch中的,一直显示""失败"",都会抛出System.Threading.ThreadAbortException,原因如下: Response.End 方法停止页的执行,并将该执行变换到应用程序的事件管线中的 Application_EndReq... 阅读全文

posted @ 2011-11-13 12:11 陈啊M 阅读(164) 评论(0) 推荐(0) 编辑

Sqlite操作类-DbHelperSQLite

摘要: 1: /// <summary> 2: /// 数据访问基础类(基于SQLite) 3: /// 可以用户可以修改满足自己项目的需要。 4: /// </summary> 5: public abstract class DbHelperSQLite 6: { 7: //数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库. 8: public static string connectionStr... 阅读全文

posted @ 2011-11-13 12:07 陈啊M 阅读(2195) 评论(0) 推荐(0) 编辑