Поточная обработка и статические методы в C#

Вот бессмысленный дополнительный метод как пример:

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

12
задан Ben 27 June 2010 в 23:49
поделиться

3 ответа

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

14
ответ дан 2 December 2019 в 20:15
поделиться

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

2
ответ дан 2 December 2019 в 20:15
поделиться

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

0
ответ дан 2 December 2019 в 20:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: