C#如何像这样覆盖?

C#如何像这样覆盖?,c#,overriding,C#,Overriding,下面的代码表示a()不能将a()重写为wee。a()未标记为virtual、abstract或override。有办法解决这个问题吗?我需要在超级方法中包含代码,但仍然希望覆盖它 public abstract class wee { public void a() { } } public class dee : wee { public override void a() { } public void b() { } } 你需要标记wee.a 虚拟:

下面的代码表示a()不能将a()重写为wee。a()未标记为virtual、abstract或override。有办法解决这个问题吗?我需要在超级方法中包含代码,但仍然希望覆盖它

public abstract class wee
{
  public void a()
  {

  }
}
public class dee : wee
{
  public override void a()
  {
  }
  public void b()
  {
  }
}
你需要标记wee.a

虚拟:

public abstract class wee
{
  public virtual void a()
  {

  }
}

public class dee : wee
{
  public override void a()
  {
  }
  public void b()
  {
  }
}
摘要:

public abstract class wee
{
  public abstract void a();
}

public class dee : wee
{
  public override void a()
  {
  }
  public void b()
  {
  }
}
你需要标记wee.a

虚拟:

public abstract class wee
{
  public virtual void a()
  {

  }
}

public class dee : wee
{
  public override void a()
  {
  }
  public void b()
  {
  }
}
摘要:

public abstract class wee
{
  public abstract void a();
}

public class dee : wee
{
  public override void a()
  {
  }
  public void b()
  {
  }
}
wee.a()
as标记为--它允许您提供一个基本实现,但如果需要,还提供了在子类中重写该行为的选项

// wee
public virtual void a() { // do stuff for base implementation }

// dee
public override void a() { // override behavior implemenation }
wee.a()
as标记为--它允许您提供一个基本实现,但如果需要,还提供了在子类中重写该行为的选项

// wee
public virtual void a() { // do stuff for base implementation }

// dee
public override void a() { // override behavior implemenation }
它将不会重写该方法,如果不将基标记为这样,则无法执行此操作。如果您不想像其他人建议的那样修改base,您可以像下面这样隐藏base方法:

public class dee : wee
{
    public new void a()
    {
    }
    public void b()
    {
    }
}
它将不会重写该方法,如果不将基标记为这样,则无法执行此操作。如果您不想像其他人建议的那样修改base,您可以像下面这样隐藏base方法:

public class dee : wee
{
    public new void a()
    {
    }
    public void b()
    {
    }
}

标记为虚拟?有什么原因你不能这样做吗?有什么原因你不能在原始代码中添加虚拟代码吗?是的,看起来虚拟就是这样做的,我不知道虚拟存在着,呵呵。谢谢大家:D!,标记为虚拟?有什么原因你不能这样做吗?有什么原因你不能在原始代码中添加虚拟代码吗?是的,看起来虚拟就是这样做的,我不知道虚拟存在着,呵呵。谢谢大家:D!,