Q-->question        A-->answer        M-->mention
          The Chapter 14th  Interface

Q:基类和接口的不同用途?
A:1. is-a VS can-do,若为can-do关系,则使用接口,如值类型,因为其继承自ValueType,所以必须为can-do
  2.易于使用,继承于基类将可直接使用基类的大部分功能,而接口则要全部给出实现
  3.一般性实现,为基类型提供良好的默认实现,以后只需提供简单修改即可使用
  4.版本控制,向基类添加方法,派生类必可以不用改变,而接口添加方法,意味着所有实现此接口的类型都必须更改

M:实际上,我们可以做两件事,定义一个接口,然后提供一个其类实现此接口,然后其他类型派生于此类,如FCL中的IComparer<T>和抽象基类Comparer<T>

M:FCL中将Stream数据流处理设计为继承,而将集合设计为基于接口,如IEnumerable<T>,IDistionory<K,TV>

M:如果不在源码中将接口方法显式标记为virtual,则编译器会将其隐式标记为virtual和sealed,意味着其派生类不可重写此方法,若有virtual(显式),则保留unsealed

M:接口方法中的显式实现=>用定义方法的接口名称做前缀,不允许加任何访问修饰符(在生元数据时为private)即生成了接口方法的显式实现

EIMI-----> Explicit Interface Method Implementation

M:泛型接口在操纵值类型时,不需要太多的装箱操作,同时能为我们带来编译时类型安全检查,它能让我们实现同一个接口方法的若干不同重载

M:实现具有相同方法签名的多个接口==>
  其只能使用Explicit Interface Method Implimentation来实现,这个类的多个同名成员,而且在调用时必须转变为特定类型进行调用

posted on 2007-06-15 12:24  晓木  阅读(186)  评论(0编辑  收藏  举报