12

下面以一个无意义的扩展方法为例:

public static class MyExtensions
{
    public static int MyExtensionMethod(this MyType e)
    {
        int x = 1;
        x = 2;

        return x
    }
}

假设一个执行线程完成并包括以下行:

x = 2; 

处理器然后上下文切换,另一个线程进入相同的方法并完成该行:

int x = 1;

我是否正确假设第一个线程创建和分配的变量“x”与第二个线程创建和分配的变量“x”位于单独的堆栈上,这意味着该方法是可重入的?

4

3 回答 3

14

是的,每个线程都有自己单独的局部变量。即使被多个线程同时调用,此函数也将始终返回 2。

于 2010-06-27T23:52:21.540 回答
2

是的,这是一个正确的评估。 x是一个方法局部变量,不会在MyExtensionMethod.

于 2010-06-27T23:53:24.137 回答
0

很简单,是的。静态方法仅意味着可以在没有对象的情况下调用该方法。方法中的局部变量仍然是局部的。

于 2010-06-27T23:53:28.697 回答