2010-06-27 39 views
12

Đây là một phương pháp khuyến nông có ý nghĩa như một ví dụ:Threading và tĩnh phương pháp trong C#

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

     return x 
    } 
} 

Giả sử một sợi thực hiện hoàn thành tối đa và bao gồm các dòng:

x = 2; 

Bộ xử lý sau đó bối cảnh công tắc và một chuỗi khác đi vào cùng một phương pháp và hoàn thành dòng:

int x = 1; 

Tôi có corre không ct trong giả định rằng biến "x" được tạo và gán bởi luồng đầu tiên là trên một ngăn xếp riêng biệt với biến "x" được tạo và gán bởi biến thứ hai, có nghĩa là phương thức này được tái nhập?

Trả lời

14

Có, mỗi chuỗi sẽ có biến cục bộ riêng biệt. Hàm này sẽ luôn trả về 2 ngay cả khi được gọi bởi nhiều luồng cùng một lúc.

2

Vâng, đó là đánh giá chính xác. x là biến địa phương, và sẽ không được chia sẻ giữa các lời gọi MyExtensionMethod.

0

Rất đơn giản, vâng. Một phương thức tĩnh chỉ có nghĩa là phương thức có thể được gọi mà không có một đối tượng. Các biến cục bộ trong phương thức vẫn là cục bộ.

Các vấn đề liên quan