Trong trường hợp của bạn, có vẻ như việc tạo đối tượng thực tế của đối tượng đang được thực hiện bên trong phương thức GetList()
của bạn. Vì vậy, mẫu đầu tiên của bạn sẽ được sử dụng đúng.
Khi được tạo, List<MyCustomClass>
của bạn được lưu trữ trong heap và listCustClass
của bạn chỉ đơn giản là tham chiếu đến đối tượng mới đó. Khi bạn đặt listCustClass thành GetList()
con trỏ tham chiếu của listCustClass
bị hủy và được thay thế bằng một con trỏ tham chiếu đến bất kỳ số nào trả về GetList()
(có thể là null). Khi điều này xảy ra ban đầu của bạn List<MyCustomClass>
vẫn còn trong đống, nhưng không có đối tượng trỏ đến nó, do đó, nó chỉ lãng phí nguồn lực cho đến khi Garbage Collector đến xung quanh và làm sạch nó lên.
Để tổng hợp nó mỗi khi bạn tạo một đối tượng mới, sau đó từ bỏ nó, như ví dụ thứ hai, về cơ bản bạn đang lãng phí bộ nhớ bằng cách điền vào đống thông tin vô ích.
Bạn có thực sự hỏi bạn có nên viết nhà máy hay không? – annakata
Không, tôi nghĩ anh ta không hiểu rằng "mới" có nghĩa là một cuộc gọi của nhà xây dựng và tạo ra một vật thể mới. Nếu không, anh ta sẽ biết rõ hơn là tạo ra một vật thể mới và sau đó vứt nó đi. Có lẽ anh ta đến từ VB.NET, nơi mà từ khóa "Mới" có thể là một phần của cú pháp khai báo, vì vậy anh ta nghĩ đó là những gì trong C#. –
Tôi không chắc chắn về các thẻ C# và .NET trên thẻ này vì nó là một câu hỏi OOP khá chung chung. – Welbog