为什么可以在构造函数中传递虚函数的函数?
本文关键字:函数 构造函数 为什么 | 更新日期: 2023-09-27 18:06:57
当我这样做时,没有得到构造函数中潜在的虚函数调用警告:
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可能是虚拟的?所以我们不能在构造函数中调用虚函数吗?
仅仅因为将 CanExecuteChange
传递给另一个方法,并不意味着它实际上被调用。如果你的代码看起来像这样:
public class C
{
private Func<bool> _func;
public C(Func<bool> func)
{
_func = func;
}
}
则C
的向量只是存储传入的 Func
以供以后使用,无需担心。
即使C
ctor 确实调用了传递的Func
:
public class C
{
public C(Func<bool> func)
{
Console.WriteLine(func());
}
}
r#必须有一个有限的限制来决定它的深度,并且不会标记这个