2010-06-27 20 views
12

Hier ist eine bedeutungslose Erweiterungsmethode als ein Beispiel:Threading und statische Methoden in C#

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

     return x 
    } 
} 

Sprich einen Ausführungs-Thread beendet bis zur der Zeile:

x = 2; 

der Prozessor dann Kontextumschaltungen und ein anderer Thread gibt dieselbe Methode ein und vervollständigt die Zeile:

int x = 1; 

Bin ich corre ct in der Annahme, dass die Variable "x" erstellt und vom ersten Thread zugewiesen ist auf einem separaten Stapel zu der Variable "x" erstellt und zugewiesen von der Sekunde, was bedeutet, dass diese Methode einspringt?

Antwort

14

Ja, jeder Thread erhält seine eigene lokale Variable. Diese Funktion gibt immer 2 zurück, auch wenn sie von mehreren Threads gleichzeitig aufgerufen werden.

2

Ja, das ist eine korrekte Einschätzung. x ist eine methodenlokale Variable und wird nicht zwischen den Aufrufen MyExtensionMethod geteilt.

0

Ganz einfach, ja. Eine statische Methode bedeutet nur, dass die Methode ohne ein Objekt aufgerufen werden kann. Die lokalen Variablen innerhalb der Methode sind immer noch lokal.