您的位置:首页 > 编程语言 > C#

C#高级编程(第7版)笔记--第3章对象与类型

2011-08-25 14:43 281 查看
本章新知识点有:

1、扩展方法

有许多扩展类的方式。如果有类的源代码,继承就是给对象添加功能的好方法。     但如果没有源代码,该怎么办?此时可以使用扩展方法,它允许改变一个类,但不需要该类的源  

代码。

扩展方法是静态方法,它是类的一部分,但实际上没有放在类的源代码中。假定上例中的Money类需要一个方法AddToAmomtrdec涮 am。mtToAdd,。 但是,由于某种原因,程序集最初的源代码不能直接修改。此时必须做的所有工作就是创建一个静态类,把方法 AddToAmountO添加为一个静态方法。对应的代码如下:

namespace Wrox

(

public statio class MoneyExtension

(

public static void AddToAmount(this MOney money` decimal amountToAdd)

(

money.Amount += amountToAdd`

)

)

)

注意AddToAmomjO方法的参数。对于扩展方法,第一个参数是要扩展的类型,它放在血s关键字的后面。这告诉编译器,这个方法是Money类型的一部分。在这个例子中,Money是要扩展的类型。在扩展方法中,可以访问所扩展类型的所有公有方法和属性。 

在主程序中,AddToAmomtO方法看起来像是另一个方法。它没有显示第一个参数,也不能对它进行任何处理。要使用新方法,需要执行如下调用,这与其他方法相同:

即使扩展方法是静态的,也要使用标准的实例方法语法。注意这里使用 cash1实例变量来调用AddToAmountO,而没有使用类型名。如果扩展方法与类中的某个方法同名,就从来不会调用扩展方法。类中已有的任何实例方法优先。

 

2、结构与类的区别:a:结构存在堆中,类放在堆中。b:结构是值类型继续自System.ValueType,类是引用类刑。c:结构不能继承,类可以。d:结构可以不实例化就使用,但类不行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: