首页 > 其他 > 详细

C# 编译错误cs0106

时间:2014-03-23 19:11:28      阅读:628      评论:0      收藏:0      [点我收藏+]

修饰符“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; }

    }
}


C# 编译错误cs0106,布布扣,bubuko.com

C# 编译错误cs0106

原文:http://blog.csdn.net/ddupd/article/details/21877749

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!