Подтвердить что ты не робот

Threading и статические методы в С#

Вот пример бессмысленного расширения:

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", созданной и назначенной вторым, что означает, что этот метод является повторным?

4b9b3361

Ответ 1

Да, каждый поток получает свою собственную локальную переменную. Эта функция всегда возвращает 2, даже если вызывается несколькими потоками одновременно.

Ответ 2

Да, это правильная оценка. x - локальная переменная метода и не будет использоваться между вызовами MyExtensionMethod.

Ответ 3

Совершенно просто, да. Статический метод означает, что метод можно вызывать без объекта. Локальные переменные внутри метода все еще локальны.