2011-09-13 59 views
-1

Possible Duplicate:
Why are private virtual methods illegal in C#?錯誤:不能宣佈一個虛擬/抽象成員私人

我在C#下面的代碼,和Visual Studio在派生類中抱怨說,我不能宣佈一個虛擬/抽象成員私人..但我不是......所以有人有一些想法?感謝

public class Base 
{ 
    private const string Name= "Name1"; 
    protected virtual string Member1 
    { 
    get{ 
     return Name; 
     } 
    } 
} 

public class Derived: Base 
{ 
private const string Name= "Name2"; 
protected override string Member1 
{ 
    get{ 
    return Name; 
    } 
} 
} 
+0

你能後的實際錯誤消息太?在全? –

+1

這不是正確的C#...請發佈您的實際代碼! –

+1

我希望你的實際代碼有小寫的'class',並且成員函數被正確地聲明爲'protected virtual string Member1();'? – Dmitry

回答

5

無法複製,具有固定「類」的情況下和提供的方法機構:

class Base 
{  
    protected virtual string Member1() { return null; }  
} 

class Derived : Base 
{ 
    protected override string Member1() { return null; } 
} 

這將編譯沒有警告。

如果你試圖聲明領域虛擬,你會得到:

Test.cs(11,30): error CS0106: The modifier 'virtual' is not valid for this item
Test.cs(17,31): error CS0106: The modifier 'override' is not valid for this item

+0

完成與道具相同 - 沒有問題要麼... –

+0

謝謝,喬恩。它編譯得很好。視覺工作室很奇怪,它不斷給我這個警告,直到我編譯它... – RKM

2

虛方法必須有一個身體:

public class Base 
{ 

    protected virtual string Member1() 
    { 
     return ""; 
    } 

} 

public class Derived: Base 
{ 
    protected override string Member1() 
    { 
     return "this is the ovveride"; 
    } 

}