错误:无法将虚拟/抽象成员声明为私有

时间:2011-09-13 14:29:59

标签: c#

  

可能重复:
  Why are private virtual methods illegal in C#?

我在C#中有以下代码,并且Visual Studio在Derived类中抱怨我不能声明虚拟/抽象成员私有..但我不是..所以有人有一些想法吗?感谢

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;
     }
 }   
}

2 个答案:

答案 0 :(得分:5)

无法复制,修复了“类”的情况并提供了方法体:

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

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

编译时没有任何警告。

如果您尝试将字段声明为虚拟,那么您将获得:

  

Test.cs(11,30):错误CS0106:修饰符'virtual'对此项无效
  Test.cs(17,31):错误CS0106:修饰符'覆盖'对此项无效

答案 1 :(得分:2)

虚拟方法必须有一个正文:

public class  Base
{

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

}

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

}
相关问题