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