2011-09-13 17 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

ありがとう、ジョン。それはうまくコンパイルしました。私はそれをコンパイルするまで、Visual Studioは奇妙です、それは私にこの警告を与え続けました... – RKM

2

仮想メソッドは、ボディを持っています

public class Base 
{ 

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

} 

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

} 
関連する問題