2010-06-27 16 views
12

Aquí es un método de extensión de sentido como un ejemplo:de roscado y estáticas métodos en C#

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

     return x 
    } 
} 

dicen que un hilo de ejecución completa hasta e incluyendo la línea:

x = 2; 

El procesador entonces cambios de contexto y otro subproceso ingresa el mismo método y completa la línea:

int x = 1; 

Soy corre ct en el supuesto de que la variable "x" creada y asignada por el primer hilo está en una pila separada a la variable "x" creada y asignada por el segundo, lo que significa que este método es reentrante?

Respuesta

14

Sí, cada subproceso tiene su propia variable local separada. Esta función siempre devolverá 2 incluso si es invocada por múltiples hilos simultáneamente.

2

Sí, es una evaluación correcta. x es una variable de método local y no se compartirá entre las invocaciones de MyExtensionMethod.

0

En pocas palabras, sí. Un método estático solo significa que se puede llamar al método sin un objeto. Las variables locales dentro del método son aún locales.