声明密闭方法失败了,奇怪的编译异常

声明密闭方法失败了,奇怪的编译错误
我尝试从一个接口继承,然后把方法进行密闭:

    interface I
    {
        void f();
    }
    public class M : I
    {
        sealed public override void f()
        {
        }
    }

结果编译错误
Error 1 'NS2.M.f()' cannot be sealed because it is not an override

可是我明明加上了sealed关键字啊,不懂了

------解决思路----------------------
光实现接口不需要写override和sealed
下面这种情况才行
interface I
    {
        void f();
    }
    public class L : I
    {
        public virtual void f()
        {
        }
    }
    public class M : L, I
    {
        sealed public override void f()
        {
        }
    }

------解决思路----------------------
接口还只是实现,还没到重写呢
------解决思路----------------------
接口是契约,是一种约定
override用来重写基类方法成员
------解决思路----------------------
引用:
L类的f函数即使不写virtual修饰符,它也是virtual的吧? 


根据呢?难道是根据c++或者java?
------解决思路----------------------
引用:
Quote: 引用:

光实现接口不需要写override和sealed
下面这种情况才行
interface I
    {
        void f();
    }
    public class L : I
    {
        public virtual void f()
        {
        }
    }
    public class M : L, I
    {
        sealed public override void f()
        {
        }
    }


L类的f函数即使不写virtual修饰符,它也是virtual的吧? 但是我发现如果不写这个的话,M类的f函数加上override关键字就抱编译错误,说是"There's no suitable method to override"

这是为何呢?


在C#里只有virtual/abstract修饰的成员才可以重写