语义驱动接口中允许的抽象成员与抽象类

时间:2017-02-02 01:04:50

标签: c# types interface abstract-class

我在Joseph Albahari的一本书中简要介绍了下面的陈述:

  

接口只能包含方法,属性,事件和索引器,非巧合恰好是可以抽象的类的成员。

让我思考的是为什么作者说它发生了如此非巧合我认为并非如此。我认为这两种情况都是推动这种可能性的因素。

这是我看待它的方式。据我所知,只有以下项目可以在C#中声明为抽象:

  1. 方法
  2. A Property
  3. 索引器
  4. 活动
  5. 现在,在抽象类和接口中,当然可以存在四个以上的东西。因此,这个事实是实体在类或接口中可以抽象的关键驱动因素。

    现在似乎作者认为其他方式也是如此,即容器(抽象类或接口)是它们可以包含的驱动因素,它恰好发生在非巧合的情况下,最终可能出现的抽象成员类型在完成编译器设计之后,这两个地方变得相同。

    我想知道是否有人知道不同的内部语义驱动接口内的允许抽象成员与抽象类。我看待它的方式是,只有四种类型的项目可以是抽象的,所以相同的事实应该推动它存在于容器中的可能性,容器可以是接口或抽象类。

1 个答案:

答案 0 :(得分:1)

您可以将接口视为仅包含抽象成员的抽象类(抽象类也可能包含非抽象成员)。

因此,抽象类中可以抽象的成员类型与接口的成员类型相同,反之亦然,这不是巧合,而是必然结果。