C# 编译错误cs0106
来源:互联网 发布:go语言 知乎 编辑:程序博客网 时间:2024/05/13 23:43
修饰符“modifier”对该项无效:
类或接口成员是用无效的访问修饰符标记的。 下列示例描述了一些无效的修饰符:
在接口方法上不允许使用 static 和 public 修饰符。
在显式接口声明上不允许使用 public 关键字。 在这种情况下,请从显式接口声明中移除 public 关键字。
在显式接口声明上不允许使用 abstract 关键字,因为显式接口实现永远不能被重写。
在以前的 Visual Studio 版本中,不允许在类上使用 static 修饰符,但允许 static 类以 Microsoft Visual Studio 2005 开头。
现在说说自己的理解:
(1)接口是要被继承的,它没有方法,属性,事件,索引器的实现,所以不能实例化,因此不能static。
(2)接口成员是自动public的,因此不能在接口的声明上添加任何访问修饰符,包括public修饰符
(3)显式接口的实现的时候,因为已经指明接口是显式的,所以在指明public就是多余的
(4)至于为什么不能用abstract,virtual关键字?VS中讲:
接口如果被基类继承实现,再被派生类继承基类,那么派生类被认为是隐式的实现接口,这个是为什么在派生类中不可以对接口重写的原因。所以我们就当这个是接口的特性吧,接口只能被实现一次,不能被重写,因此当指定了显示的接口,那就必须得去实现该接口,也不能再去重写了。
示例:
namespace ConsoleApplication10Inter{ interface Inter1 { void func(); //public int getIndex(string str); int add(int x, int y); int sub(int x, int y); } abstract class Class1:Inter1 { //void func() { } //error,接口成员的实现方法必须是public的 public virtual void func() { } public abstract int add(int x,int y); //abstract int Inter1.sub(int x,int y);//error,显示接口不能被声明为abstract //virtual int Inter1.sub() { return 0; }//error public int sub(int x,int y) { return 0; } }}
0 0
- C# 编译错误cs0106
- C#常见编译错误
- c#编译错误Inconsistent accessibility
- c#编译错误Inconsistent accessibility
- C# asp.net常见编译|运行错误
- C#编译错误实例及解决方法
- .net C# 动态编译 cs2001 错误 处理
- C# VS2012/VS2013 编译management错误
- 编译错误
- 编译错误
- 编译错误
- 编译错误
- 编译错误
- 编译错误
- 编译错误
- 编译错误
- 编译错误
- 编译错误
- ADO.Net基础-学习笔记
- ArrayList
- TextView属性大全
- 命令提示符在哪里
- 得到屏幕真实高度包含NavigationBar
- C# 编译错误cs0106
- XMPP协议学习笔记四(Openfire服务器启动过程)
- 【Java并发编程】之二:线程中断(含代码)
- TWaver HTML5学习笔记 —— 动态设置网元样式
- 【转载】把二元查找树转变成排序的双向链表
- Redis学习笔记-Redis安装
- Codeforces Round #238 (Div. 2)C:Unusual Product
- HighCharts之2D含有负值的面积图
- datagrid 修改列宽字体 苏州金鲨信息科技有限公司