Không, không có gì trong C#. Tất cả trạng thái mà bạn muốn tồn tại trên nhiều cuộc gọi phương thức phải nằm trong các trường, ví dụ hoặc tĩnh.
Ngoại trừ ... nếu bạn nắm bắt biến trong biểu thức lambda hoặc đại loại như thế. Ví dụ:
public Func<int> GetCounter()
{
int count = 0;
return() => count++;
}
Bây giờ bạn có thể sử dụng:
Func<int> counter = GetCounter();
Console.WriteLine(counter()); // Prints 0
Console.WriteLine(counter()); // Prints 1
Console.WriteLine(counter()); // Prints 2
Console.WriteLine(counter()); // Prints 3
Bây giờ tất nhiên bạn chỉ gọi GetCounter()
một lần, nhưng mà "biến địa phương" chắc chắn là sống trên cũng vượt ra ngoài đời bạn có thể có dự kiến ...
Điều đó có thể hoặc không thể sử dụng cho bạn - điều đó phụ thuộc vào những gì bạn đang làm. Nhưng hầu hết thời gian nó thực sự có ý nghĩa đối với một đối tượng để có trạng thái của nó trong các lĩnh vực bình thường.
Nguồn
2011-12-14 21:44:31
C được phát minh khi đề không tồn tại được nêu ra. Vì vậy, là Visual Basic, họ đã phải thực hiện nó trong vb.net. Số lượng mã nó cần để tạo ra để làm cho nó thread và ngoại lệ an toàn là khá lớn. –
Câu hỏi rất hay –