【发布时间】:2013-07-09 11:02:22
【问题描述】:
interface 方法的访问修饰符是什么?它应该是public 或protected,因为您在实现它们时可以访问它们(这是有道理的)。它也应该是abstract,因为它们没有实现。但最近我一直在读一本名为CLR Via C#的书,关于接口的章节说如下
CLR 要求将
interface方法标记为virtual。如果您没有在源代码中将方法显式标记为virtual,编译器会将方法标记为virtual和sealed。
当您标记interface 成员virtual 时,编译器会抱怨访问修饰符无效。我的意思是没有访问修饰符对interface 中的任何内容都有效,而不是编译器提供给他们的默认访问修饰符对吗?谁能帮我说清楚?
【问题讨论】:
-
CLR的实现细节和C#语言的指定行为是有区别的。并不那么令人惊讶。 CLR 要求接口方法是虚拟的,但您不能在 C# 中以这种方式声明它们,因为您不能在派生类中覆盖它们。