C#成员修饰符必须在成员类型之前

时间:2014-07-02 00:39:29

标签: c# polymorphism

我是编程新手

我试图理解多态性的概念是C#。 我写了简单的以下代码,但我收到了错误

“成员修饰符'virtual'必须在成员类型和名称之前” “方法必须有一个返回值”

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

namespace InheritanceEx1
{
class Program
{
    static void Main(string[] args)
    {
        Shape s = new Circle();
        s.draw();
    }
}

class Shape
{
    public void virtual draw()
    {
        Console.WriteLine("Drawing Shape...");
    }
}

class Circle
{
    public override void draw()
    {
        Console.WriteLine("Drawing Circle...");
    }
}
}

如何消除这个错误?

2 个答案:

答案 0 :(得分:0)

撰写virtual void代替void virtual(在方法draw的声明中)。

方法的返回类型必须始终紧跟在方法的名称之前。您的draw方法不会返回任何值,因此其"返回类型"是void。因此void必须出现在draw之前,即void draw。然后会出现一条错误消息,告知您virtual必须出现在返回类型之前,因此您获得了virtual void draw

因为您还没有这样写,所以编译器会从virtual draw推断出您还没有指定返回类型。你有,但在编译器没有预料到的地方。

答案 1 :(得分:0)

  

“方法必须有返回值”

您的方法签名没有指定返回类型。

您的方法必须具有返回类型。使用void:

public virtual void draw()