2014-07-02 54 views
0

我很新编程C#成员修饰符必须先于成员类型

我想了解多态的概念是C#。 我写了简单的下面的代码,但我得到一个错误

“会员修改‘虚拟’必须先于成员类型和名称” “方法必须有一个返回值”

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

写入virtual void而不是void virtual(在您的方法draw的声明中)。

方法的返回类型必须始终在方法名称前面。您的draw方法不会返回任何值,因此其“返回类型”为voidvoid因此必须紧接在draw之前出现,即void draw。一条错误消息然后告诉你virtual必须出现在返回类型之前,所以你得到了virtual void draw

因为您没有这样写过,所以编译器从virtual draw推导出您还没有指定返回类型。你有,但在编译器不期望它的地方。

+0

谢谢!它现在好了:) – Abzi94

0

“方法必须有一个返回值”

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

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

public virtual void draw() 
相关问题