【发布时间】:2011-03-17 19:44:28
【问题描述】:
这里的 C# - 是否可以让抽象基类定义具有默认行为的方法,并在子类实现之前调用此默认值?例如:
public abstract class Base
{
public virtual int GetX(int arg)
{
if (arg < 0) return 0;
// do something here like "child.GetX(arg)"
}
}
public class MyClass : Base
{
public override int GetX(int arg)
{
return arg * 2;
}
}
MyClass x = new MyClass();
Console.WriteLine(x.GetX(5)); // prints 10
Console.WriteLine(x.GetX(-3)); // prints 0
基本上我不想在每个子实现中都放置相同的样板...
【问题讨论】:
-
从某种意义上说有点违背
override的观点,但我理解避免样板的愿望。也许,您可以通过始终在子覆盖开始时调用基类的方法来使样板文件更简单。不过,除了惯例,我不知道有什么方法可以强制执行。