2014-07-02 55 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() 
相關問題