【发布时间】:2014-11-18 10:57:09
【问题描述】:
我有一个快速的 C# 问题。 如果我有这样的方法
protected virtual void Delete(Guid? guidId)
{
}
然后我像这样覆盖它
protected override void Delete(Guid? id)
{
if (id != null)
{
code goes here
}
}
我可以像这样将 if 语句放在基本方法中
protected virtual void Delete(Guid? guidId)
{
if (id != null)
{
code goes here
}
}
然后这样称呼它
protected override void Delete(Guid? id)
{
base.Delete(id);
code goes here
}
但是现在在被覆盖的方法中,如果基方法没有进入那个 if 语句,我不想继续。 我只是想知道这是否可能。谢谢你:)
【问题讨论】:
-
让方法返回 bool 是一种简单的解决方法。
-
为什么不在派生类中重新检查这个条件?
-
@HimBromBeere 因为 id 决不能为空,并且通过调用 base 来检查这一点,我的带有大量嵌套 if 的大型删除方法将减少一个缩进。
标签: c# overriding virtual