c# – 如果虚拟方法被声明为abstract

前端之家收集整理的这篇文章主要介绍了c# – 如果虚拟方法被声明为abstract前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的朋友问我抽象方法是否可以有虚拟修饰符.我说,不.
因为抽象方法也隐式也是虚方法,所以它不能具有虚拟修饰符.

但在阅读one of the MSDN articles时,我看到了这个:


If a virtual method is declared abstract,it is still virtual to any
class inheriting from the abstract class. A class inheriting an
abstract method cannot access the original implementation of the
method—in the prevIoUs example,DoWork on class F cannot call DoWork
on class D. In this way,an abstract class can force derived classes
to provide new method implementations for virtual methods….

我无法正确理解第一句话.你能不能解释一下他们想说什么?

谢谢.

解决方法

当您查看引用段落正上方的代码示例时,它会变得更清晰:
public class D
{
    public virtual void DoWork(int i)
    {
        // Original implementation.
    }
}

public abstract class E : D
{
    public abstract override void DoWork(int i);
}

虚拟方法D.DoWork由E继承,并且在那里声明为abstract.该方法仍然是虚拟的,它也刚刚变得抽象.

正确地说,抽象方法总是虚拟的.如果你的朋友仍然不相信,那么这是一个official quote

An abstract method is implicitly a virtual method.

猜你在找的C#相关文章