Just For Me

博客园 首页 新随笔 联系 订阅 管理

2010年9月16日 #

摘要: 抽象类提供了更灵活的实现手段,扩展性也更好;而接口解决的是按照合同办事,强调对象的行为。从面向抽象的角度来说,二者有重叠但是面向角度不同。 在不同的应用场合,各有利弊,也各有用途。例如抽象类偏向属性,而接口强调行为;抽象类容易扩展,而接口职责单一,不易扩展;抽象类经常面向于数据集内部,而接口经常用于不同数据集的交互。抽象类和接口的使用: 1. 如果预计要创建组件的多个版本,则创建抽象类。抽象类提供... 阅读全文
posted @ 2010-09-16 13:09 JunjieChang 阅读(726) 评论(0) 推荐(0) 编辑

2010年9月15日 #

摘要: 索引器允许类或结构的实例就像数组一样进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。索引器在语法上方便您创建客户端应用程序可将其作为数组访问的类、结构或接口。索引器经常是在主要用于封装内部集合或数组的类型中实现的。索引器表示法不仅简化了客户端应用程序的语法,还使其他开发人员能够更加直观地理解类及其用途。要声明类或结构上的索引器,请使用 this 关键字,如下例所示:[代码]索引器概述... 阅读全文
posted @ 2010-09-15 00:57 JunjieChang 阅读(302) 评论(0) 推荐(0) 编辑

2010年9月13日 #

摘要: 嵌套类(Nested Class)是在类中定义的类。以下把拥有内嵌类的类称为外部类。根据《深入理解嵌套类和内部类》嵌套类分为静态嵌套类和非静态嵌套类,其中非静态嵌套类页被称为内部类。 嵌套类在UML中是composite的另外一种代码表示形式,表示耦合度更高,并且与外部类更加紧密。 一般类的 访问修饰符可以定义为默认的internal 或者public,而内嵌类就有比较多的选择,可以是为prot... 阅读全文
posted @ 2010-09-13 16:40 JunjieChang 阅读(392) 评论(0) 推荐(1) 编辑

摘要: 一、基础扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异。扩展方法是可以通过使用实例方法语法调用的静态方法。效果上,使得附加的方法扩展已存在类型和构造类型成为可能。他可以对现有类功能进行扩充,从而使该类型的实例具有更多的方法。扩展方法有助... 阅读全文
posted @ 2010-09-13 16:00 JunjieChang 阅读(282) 评论(0) 推荐(0) 编辑

2010年9月12日 #

摘要: 1.不要返回错误代码。异常是报告框架中的错误的主要手段。  这个就不讨论了,异常包含的信息量远不是几个错误代码可以替代的.2. 通过引发异常来报告执行故障。如果某一成员无法按预期方式成功执行,则应将这种情况视为一个执行故障并引发一个异常。  例如函数的参数检测,参数不符合输入要求,就应该引发一个异常.另外还有很多情况,只要程序无法按照预定的逻辑执行下去,就应该引发一个异常.3.如果代码遇到继续执行... 阅读全文
posted @ 2010-09-12 16:22 JunjieChang 阅读(242) 评论(0) 推荐(1) 编辑

2010年9月9日 #

摘要: 尽管在.NET framework下我们并不需要担心内存管理和垃圾回收(Garbage Collection),但是我们还是应该了解它们,以优化我们的应用程序。同时,还需要具备一些基础的内存管理工作机制的知识,这样能够有助于解释我们日常程序编写中的变量的行为。在本文中我将讲解栈和堆的基本知识,变量类型以及为什么一些变量能够按照它们自己的方式工作。  在.NET framework环境下,当我们的代... 阅读全文
posted @ 2010-09-09 23:05 JunjieChang 阅读(534) 评论(1) 推荐(0) 编辑

摘要: 近段时间,有几个刚刚开始学习C#语言的爱好者问我:C#中的函数,其参数的传递,按值传递和按引用传递有什么区别。针对这一问题,我简单写了个示例程序,用以讲解,希望我没有把他们绕晕。因为,常听别人说起:“你不说我还明白,你一说,我就糊涂了”。 好,现在开始吧。 我们知道,在C#中,类型有值类型(例如int)和引用类型(例如string)之分,传递参数有按值传递和按引用传递之分。... 阅读全文
posted @ 2010-09-09 22:50 JunjieChang 阅读(183) 评论(0) 推荐(0) 编辑

摘要: 说到参数传递,必须得弄清值类型和引用类型:(为了容易表达,我暂且命名存放在堆中的内容为堆中对象,存放在栈上的内容为栈中对象。)值类型存放在栈中,直接访问。如果有:int a=0;int b=a;就产生了两个栈中对象。引用类型需要在堆中显式分配,且不能直接访问,需要在栈中分配一个栈中对象(C++叫指针,C#叫引用)指向其堆中对象。如果:StringBuilder strb = new StringB... 阅读全文
posted @ 2010-09-09 17:39 JunjieChang 阅读(405) 评论(0) 推荐(0) 编辑

摘要: C# string 特殊的引用类型   .Net 框架程序设计(修订版)中有这样一段描述:String类型直接继承自Object,这使得它成为一个引用类型,也就是说线程上的堆栈上不会驻留有任何字符串。(译注:注意这里的“直接继承”。直接继承自Object的类型一定是引用类型,因为所有的值类型都继承自System.ValueType。值得指出的是System.ValueTyp... 阅读全文
posted @ 2010-09-09 12:44 JunjieChang 阅读(5266) 评论(1) 推荐(3) 编辑

摘要: .Net中的数据类型是程序员需要认真掌握的基础知识。.NET 中类型的两个基本类别是“值类型”和“引用类型”。基元类型、枚举和结构为值类型。类、字符串、标准模块、接口、数组和委托为引用类型。所有的类型要么是值类型,要么是引用类型,但有一种情况例外。根类型 System.Object ,它非常特殊,因为它既不是引用类型也不是值类型,而且不能实例化。因此... 阅读全文
posted @ 2010-09-09 11:26 JunjieChang 阅读(233) 评论(0) 推荐(0) 编辑