Trong C# Tôi luôn luôn sử dụng một lớp tĩnh để cung cấp chức năng này. lớp tĩnh được trình bày chi tiết here, nhưng một thời gian ngắn họ chỉ chứa các thành viên tĩnh và không được khởi tạo - về cơ bản họ đang chức năng toàn cầu và các biến truy cập thông qua tên lớp của họ
Dưới đây là một ví dụ đơn giản:
(và không gian tên.)
public static class Globals
{
public static string Name { get; set; }
public static int aNumber {get; set; }
public static List<string> onlineMembers = new List<string>();
static Globals()
{
Name = "starting name";
aNumber = 5;
}
}
Lưu ý, tôi cũng đang sử dụng bộ khởi tạo tĩnh được đảm bảo chạy vào một thời điểm trước khi bất kỳ thành viên hoặc chức năng nào được sử dụng/gọi.
Ở những nơi khác trong chương trình của bạn, bạn chỉ có thể nói:
Console.WriteLine(Globals.Name);
Globals.onlineMemeber.Add("Hogan");
đối tượng tĩnh chỉ "tạo ra" một lần. Vì vậy, ở khắp mọi nơi ứng dụng của bạn sử dụng các đối tượng sẽ được từ cùng một vị trí. Họ là theo định nghĩa toàn cầu. Để sử dụng đối tượng này ở nhiều nơi, chỉ cần tham chiếu tên đối tượng và phần tử bạn muốn truy cập.
Bạn có thể thêm thành viên tĩnh vào bất kỳ lớp nào và chúng sẽ có sẵn trên toàn cầu, nhưng tôi nghĩ có một địa điểm cho hình cầu là thiết kế tốt hơn.
Trạng thái toàn cầu là điều xấu. Nó làm cho các chương trình rất khó để giải thích và gỡ lỗi. – Oded
@Oded, đúng nhưng đôi khi bạn không thể tránh nó - sau đó làm cho nó rõ ràng và minh bạch là rất quan trọng. – Hogan