Từ .NET 4 trở đi, Lazy<T>
có thể được sử dụng để tạo ra các đối tượng lười biếng. Trực giác, khởi tạo lười biếng cũng có thể được thực hiện trong một thuộc tính công khai getter để cung cấp chức năng tương tự cho người gọi. Tôi tự hỏi nếu Lazy<T>
cung cấp bất kỳ lợi thế vốn có nào sau này và do đó sẽ được ưu tiên hơn?Nên lười biếng <T> được ưa thích để khởi tạo lười biếng trong một getter?
Cá nhân, tôi cảm thấy rằng Lazy<>
có thể nhanh chóng giảm khả năng đọc mã, nhưng có lẽ tôi vừa thấy nó bị lạm dụng. Trên một mặt cộng, nó đảm bảo an toàn luồng, nhưng có nhiều cấu trúc đồng bộ hóa .NET - có lẽ tôi sai - làm cho nó khá dễ dàng để đạt được cùng một bên trong một getter.
Một số lưu ý cần lưu ý khi chọn phương pháp tiếp cận tốt nhất là gì?
Đưa ra ví dụ về khởi tạo lười biếng đạt được mà không cần 'Lazy '. Nó không dễ dàng như bạn nghĩ. –
bản sao có thể có của [Thuộc tính được lưu trong bộ nhớ cache và Lười biếng] (http://stackoverflow.com/questions/5134786/cached-property-vs-lazyt) –
Default
Mặc định: bỏ lỡ điều đó, cảm ơn. Điều này có thể được đánh dấu là trùng lặp. @Ben Voigt: tương tự như những gì Patrick Hofman mô tả trong câu trả lời của mình. Bên cạnh đó, tôi yêu cầu mọi người downvoting điều này để cung cấp ý kiến về cách câu hỏi này có thể được cải thiện (có thể nói tôi là loại thất vọng bởi cách tích cực trang web này đã trở thành). – w128