【C#】事件、委托 使用时为什么需要通过临时变量去执行

直接上代码:
var temp = this.innerEvent ;
if(temp != null) temp(this , msg);

为什么事件执行的时候,需要将其赋值给一个临时变量,有临时变量去执行呢?

请求大牛们给讲解吖! 跪谢!!!

这不是必须的,也可以写
if(this.innerEvent != null) this.innerEvent(this , msg);

知道原因了,这样做是考虑到了多线程的情况,为了线程安全,如果单线程可以直接使用,多谢阁下。

public class HasEvent
{
// Declare an event of delegate type EventHandler of
// MyEventArgs.

public event EventHandler<MyEventArgs> SampleEvent;

public void DemoEvent(string val)
{
// Copy to a temporary variable to be thread-safe.
    EventHandler<MyEventArgs> temp = SampleEvent;
    if (temp != null)
        temp(this, new MyEventArgs(val));
}

}

MSDN 连接 https://msdn.microsoft.com/zh-cn/library/db0etb8x(VS.80).aspx