Вот бессмысленный дополнительный метод как пример:
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" создана и присвоена вторым, означая, что этот метод повторно используем?
Да, каждый поток получает свою собственную отдельную локальную переменную. Эта функция всегда будет возвращать 2, даже если вызывается несколькими потоками одновременно.
Да, это правильная оценка. x
- это локальная переменная метода, и она не будет использоваться совместно между вызовами MyExtensionMethod
.
Довольно просто, да. Статический метод означает только то, что метод может быть вызван без объекта. Локальные переменные внутри метода остаются локальными.