我只想从所有基类派生的类列表中从基类仅调用一次方法,如何在基类中仅调用一次方法?
public class Base
{
public virtual void foo()
{
Debug.WriteLine("Base foo()");
}
}
public class A : Base
{
public override void foo()
{
base.foo();
Debug.WriteLine("A foo()");
}
}
public class B : Base
{
public override void foo()
{
base.foo();
Debug.WriteLine("B foo()");
}
}
class Program
{
static void Main(string[] args)
{
List<Base> list = new List<Base>();
list.Add(new A());
list.Add(new B());
list.Add(new A());
foreach (Base item in list)
{
item.foo();
}
}
}
代替 :
Base foo()
A foo()
Base foo()
B foo()
Base foo()
A foo()
我想要以下结果:
Base foo()
A foo()
B foo()
A foo()
最佳答案
在底部添加一个静态标志,并调整该标志
public class Base
{
public Base()
{
if (_instance == null)
_instance = this;//record the first instance
}
static Base _instance;
public virtual void foo()
{
if (_instance == this)
Debug.WriteLine("Base foo()");
}
}
关于c# - 在列表中-如何只在基数中调用一次方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42900461/