như thế nào C#, hoặc ngôn ngữ khác cho rằng vấn đề, xử lý cấp phát bộ nhớ (và bộ nhớ de-phân bổ) giữa hai kịch bản sau đây:C dụ # lớp học với phương pháp tĩnh vs sử dụng bộ nhớ lớp tĩnh
1.) Một phương pháp trên một lớp tĩnh được gọi.
public Program {
Foo foo = Loader.load();
}
public static Loader {
public static Foo load() {
return new Foo();
}
}
2.) Phương thức được gọi trên một cá thể, sau đó nằm ngoài phạm vi.
public Program {
Foo foo = new Loader().load();
}
public Loader {
public Foo load() {
return new Foo();
}
}
Tôi cho rằng lớp tĩnh được tải và vẫn còn trong bộ nhớ; trong khi dụ lớp không chống lại việc thu gom rác khi giải trí của C#. Có bất kỳ ưu nhược điểm nào cho hai mô hình này không? Có bao giờ một thời gian khi bạn có một lớp mà không bao giờ cần phải được khởi tạo (tức là một số loại bộ nạp tài nguyên hoặc nhà máy), nhưng bạn vẫn sử dụng phương pháp thứ hai để tận dụng bộ sưu tập rác?
Phần quan trọng trong câu hỏi của tôi là liệu mô hình đầu tiên hay không, trong khi khái niệm chính xác trong một số trường hợp, có thể bị giữ trên bộ nhớ không cần thiết.
Ví dụ thứ 2 có vẻ không chính xác với tôi. Việc gọi một phương thức tĩnh yêu cầu một phương thức tiền tố với tên lớp. ví dụ. 'Loader.Load()' & ** not ** 'new Loader(). Load()' – shahkalpesh
Bạn nói đúng, Shah - bạn không cần một cá thể để gọi một phương thức tĩnh. Đó là kinda điểm :) –
ah, các bạn là đúng, cảm ơn, tôi đã reworded nó để có được ở thịt của câu hỏi tôi đã cố gắng để yêu cầu. – jtb