我是编程新手
我试图理解多态性的概念是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...");
}
}
}
如何消除这个错误?
答案 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()