class Plane
{
    public event EventHandler Land;

    protected void OnLand()
    {
        if ( null != Land )
        {
            Land( this, null );
        }
    }
}


相反,它是事件处理程序的最佳做法:

EventHandler temp = Land;
if ( null != temp )
{
    temp( this, null );
}


那真的有必要吗?在什么情况下,temp与Land会有所不同?

最佳答案

我相信在多线程访问的情况下。如果您不缓存该引用,则另一个线程可以在您的警卫之后但在您触发之前将其无效。

08-26 18:56