当我这样做时,我没有在构造函数警告中获得潜在的虚函数调用:
public abstract class B : A
{
protected B(IEngine engine) : base(engine)
{
C = new C(CanExecuteChange);
}
public C C{ get; }
public abstract bool CanExecuteChange();
}
C类的构造函数采用Func<bool>
但CanExecuteChange可能是虚拟的吗?那么我们不能在构造函数中调用虚函数吗?
答案 0 :(得分:2)
仅仅因为你将 CanExecuteChange
传递给另一个方法,并不意味着它实际上是被称为。如果您的代码如下所示:
public class C
{
private Func<bool> _func;
public C(Func<bool> func)
{
_func = func;
}
}
然后C
的ctor只是存储传入的Func
以供日后使用,没有什么可担心的。
即使C
ctor 调用传递的Func
:
public class C
{
public C(Func<bool> func)
{
Console.WriteLine(func());
}
}
R#必须有一个有限的限制,看起来有多深,并且不会标记这个。