首页 > 其他 > 详细

第二部分 设计类型:第6章 类型和成员基础

时间:2014-04-01 17:42:10      阅读:393      评论:0      收藏:0      [点我收藏+]

6.1类型的各种成员

在一个类型中,可以定义0个或多个以下种类成员:

?实例构造器:将新对象的实例字段初始化的一种特殊方法。


?常量:数据值恒定不变的符号,使代码更容易阅读和维护。常量通常与类型关联,不与类型的实例关联。逻辑上讲,常量是静态成员。

?字段:表示可读或可读/可写的数据值。字段是静态时被认为是类型状态的一部分。字段是非静态时被认为是对象状态的一部分。强烈建议将字段声明为私有字段,防止类型或对象的状态被外部代码破坏。

?属性:实质是方法,以一种简单的字段风格的语法来设置或查询类型或对象的部分逻辑状态,并保证状态不被破坏。作用于类型的称为静态属性,作用于对象的称为实例属性。属性可以没有参数(普遍),也可以有多个参数(仅对集合类来说常见)。

?方法:是一个特殊函数,用于更改或查询一个类型或对象的状态。作用于类型时称为静态方法,作用于对象时称为实例方法。方法一般对类型或对象的字段执行读写操作。

?事件:利用静态事件,一个类型可以向一个或多个静态或实例方法发送通知。利用实例事件(非静态),一个对象可以向一个或多个静态或实例方法发送通知。
提供事件的类型或对象的状态发生改变,通常就会引发事件。
事件包含两个方法,允许静态或实例方法登记或注销对该事件的关注。另外,事件还使用委托字段来维护已登记的方法集。


?操作符重载:实际是一个方法,定义了将一个特定操作符作用于对象时,应该如何操作该对象。不是所有语言都支持操作符重载,所以操作符重载方法不是“公共语言规范(CLS,Common Language Specification)”的一部分。

?转换操作符:定义如何隐式或显式地将对象从一个类型转换为另一种类型的方法。和操作符重载情况一样,也不是CLS的一部分。

?类型:类型可定义嵌套于其中的其他类型。通常用这个办法将一个大的、复杂的类型分解成更小的构建单元,以简化实现。

 

无论什么语言元数据的格式是完全一致的,元数据是整个.Net FrameWork开发平台的关键,它实现了编程语言、类型和对象的无缝集成。

bubuko.com,布布扣

bubuko.com,布布扣

源代码中定义的任何成员都会被编译生成一些元数据。

 

6.2 类型的可见性
public类型对所有代码可见。
internal类型仅对定义程序集的代码可见。(默认)

友元程序集
当想让自己的internal程序集被指定的朋友团队的程序集访问到,可以用友元程序集。

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣

 

 

6.3 成员的可访问性

bubuko.com,布布扣

 

CLR要求接口类型的所有成员都具有public可访问性,所以禁止开发人员显示指定接口成员的可访问性,编译器会自动将所有成员的可访问性设为public。

派生类重写基类中的成员时,要求可访问性保持一致,这是C#规定的。CLR规定派生类重新时可以放宽可访问性,比如原来基类成员为protected的,可以放宽到public。但不允许收紧。

 

 

6.4 静态类


静态类作用:将一组相关成员组合到一起。比如Math类定义了一组只执行数学运算的方法。
static只能应用于类,不能应用于结构(值类型),因为CLR总是允许值类型实例化。

C#编译器对静态类进行了如下限制:
?静态类必须直接从基类System.Object派生,从其他任何基类派生都没意义,因为不能创建静态类的实例。继承只适用于对象。
?静态类不能实现任何接口,这是因为只有使用类的实例时,才可以调用类的接口方法。
?静态类只能定义静态成员(字段、方法、属性和事件),任何实例成员都将导致编译器报错。
?静态类不能作为字段、方法参数或局部变量使用,因为他们都代表引用了一个实例的变量,而这是不允许的。编译器检测到任何这样的用法都会报错。

 

bubuko.com,布布扣

bubuko.com,布布扣

第二部分 设计类型:第6章 类型和成员基础,布布扣,bubuko.com

第二部分 设计类型:第6章 类型和成员基础

原文:http://www.cnblogs.com/zxx193/p/3638313.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!