为什么我的界面没有实现公共方法?

时间:2014-04-22 19:51:28

标签: c# oop

为什么我的界面不能导入我的班级?我只想测试一些接口,并且需要将一个方法扩展到我的类中,以实现我的接口。我认为这很简单,但它给我一个错误,我会在底部列出。我的方法是公开的,它让我和错误。事实上,我把公共关键字拿走了,它仍然给我一个错误。

是否有一个快捷键可以将所有方法导入到类中。

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FlowControl
{
    public abstract class Grades : iBase, iFoot
    {
        public abstract void AddGrade(float grade);

        public abstract void ComputeStatistics();

        public void WriteGrades(string t)
        {
        }

        public int AddTwo(int a, int b)
        {
            return 0; 
        }

        void findYourScore() { }
    }

    public interface iBase 
    {
       public void findYourScore();
    }

    public interface iFoot 
    { 
    }
}

但是我收到了这个错误:

  

修饰符' public'对此商品无效

4 个答案:

答案 0 :(得分:7)

您无法在接口方法,属性,事件或索引器上指定访问修饰符。界面本身标记为公共,因此其所有成员也是隐式公开的。但是,您必须指定一个访问修饰符,您可以在其中实现该方法(除非您正在编写显式的接口成员实现)。

例如:

public abstract class Grades : iBase, iFoot
{
    ...
    public void findYourScore() { }
}

public interface iBase 
{
    void findYourScore();
}

进一步阅读

答案 1 :(得分:2)

您无法在界面内指定访问修饰符。您只需指定方法的签名

public interface iBase 
{
    void findYourScore();
}

来自documentation

  

接口可以包含方法,属性,事件,索引器或这四种成员类型的任意组合。接口不能包含常量,字段,运算符,实例构造函数,析构函数或类型。 界面成员自动公开,并且不能包含任何访问修饰符。成员也不能是静态的。

答案 2 :(得分:1)

就像

一样简单
public interface iBase 
{
   void findYourScore();
}

接口成员不需要访问限定符。然后,public在此上下文中无效,正如编译器所说。

答案 3 :(得分:0)

接口不指定保护级别或方法,也不实现它们。删除public / private部分,您的代码将正常运行。实现接口的类确定访问级别。如果您需要指定访问级别,请使用abstract class而不是接口。

相关问题