天道酬勤

.Net Frame 演示 by Leeson [TM]

导航

.Net Framework Programming 读书笔记(8)


由于某些章节篇幅较短,因此合并如下几章。

[2005-05-10]

8.1 常数

// 注意,C#不允许为常数指定static关键字
// 因为常数隐含为static
public const Int32 MaxEntriesInList = 50;

8.2 字段

// 类型字段需要static关键字
public static readonly Int32 MaxEntriesInList = 50;

9.1 实例构造器

默认构造器:公有的无参构造器
字段赋值Int32 x=5; 将会引起代码膨胀。

可验证安全性:所有基于堆栈的类型都必须在读取之前得到赋值。
[.ctor]

9.2 类型构造器

静态构造器,类构造器,类型初始化器。
static 类名称(){}

CLR调用:在类型的第一个实例被创建之前(just before)
  在非继承静态字段被第一次访问之前的某一时刻(可能很早)
[.cctor]

CLR不支持静态Finalize方法。可以在System.AppDomain类型的DomainUnload事件上登记一个回调方法。

9.3 操作符重载方法

CLR对操作符重载一无所知。对于特定语言的操作符有对照表"op_XXX"。

操作符与语言互操作性

[2005-05-11]

9.4 装换操作符方法

装换操作符本质上仍然是一些方法,他们可以将一个类型转化为另一个类型。
implicit--可以隐式转换
explicit--必须显式转换

9.5 引用参数

对于方法:每个参数必须是明确引用/值类型。

out/ref: 那个方法负责初始化参数。在值类型参数上使用out关键字会提升一定的效率。

9.6 可变数目参数

static Int32 Add(params Int32[] values){...}

params关键字告诉编译器在指定的参数上应用一个[System.ParamArrayAttribute]定制特性。

class App{
  static void Main()
  {
    DisplayTypes(new object(),new Random(),"Jeff",5);
  }
  static void DisplayTypes(params object[] objects)
  {
    foreach(object o in objects)
      Console.WriteLine(o.GetType());
  }
}


输出结果:
System.Object
System.Random
System.String
System.Int32

9.7 虚方法的调用机理

ToString在基类Object中的虚方法。

继承自Object的类型,需要 public override String ToString(){...}

new--新创建一个方法,与基类的同名方法无关。
override--重新编写基类虚方法,如基类中调用了改名方法;则启动该重载方法。

[2005-05-12]

10.1 无参属性

字段区别于属性,数据封装(data encapsulation),属性=智能字段(smart field)

封装了对字段访问的方法典型的被称为访问器方法(accessor method)

10.2 含参属性

C# -- 索引器(indexer);VB -- 默认属性(default property);C++ -- 索引属性(index property)

CLR 本身不知道属性,仅仅是定义在类型中的一对(或一个)

C#将索引器看作是重载[]操作符的一种方式。

posted on 2005-07-13 08:36  我自横刀哈哈笑  阅读(169)  评论(0)    收藏  举报