public override void X(){ base.X();} 此代码如何更改程序功能



为什么重写虚拟方法,而只调用基方法而不执行任何其他操作,会导致程序的运行方式发生变化?

例如:

    public override void OnDeserialize(NetworkReader reader, bool initialState)
    {
        base.OnDeserialize(reader, initialState);
    }

重写:

    public virtual void OnDeserialize ( NetworkReader reader, bool initialState );

导致不同的结果。

就我而言,一个名为UNET的网络图书馆不起作用。

您可以在此处查看最小化的测试用例,其中包括日志。

如果按预期使用覆盖,则不应发生函数更改,但是函数更改仍然很容易实现。

库可以使用反射来确定类是否覆盖了函数,并根据该检查更改其操作。

在这种情况下,这似乎是 Unity 的错误。 我认为它会检查是否需要调用一种方法作为优化,编写不正确,并导致程序流发生变化。

最新更新