首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我对C#接口成员的默认访问修饰符感到困惑

我对C#接口成员的默认访问修饰符感到困惑
EN

Stack Overflow用户
提问于 2013-07-11 08:43:28
回答 1查看 10.2K关注 0票数 5

interface方法的访问修饰符是什么?它应该是publicprotected,因为您在实现它们时可以访问它们(这是有意义的)。它也应该是abstract,因为它们没有实现。但最近我读了一本书,名为“通过C#进行CLR”,关于接口的章节如下

CLR要求将interface方法标记为virtual。如果没有在源代码中显式地将该方法标记为virtual,编译器将该方法标记为virtualsealed

当您标记interface成员时,virtual编译器会抱怨访问修饰符无效。我的意思是,在interface中,没有任何访问修饰符是有效的,而不是编译器给它们的默认修饰符,对吗?有人能为我说清楚吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-11 08:46:18

接口(C#编程指南)

接口可以包含方法、属性、事件、索引器或这四种成员类型的任何组合。有关示例的链接,请参阅相关章节。接口不能包含常量、字段、运算符、实例构造函数、析构函数或类型。接口成员自动是公共的,它们不能包含任何访问修饰符。成员也不能是静态的。

以及接口成员的实现:

要实现接口成员,实现类的对应成员必须是公共,非静态的,并且具有与接口成员相同的名称和签名。

因此,您不能使用protected one实现接口成员。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17588889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档