2010-12-11 38 views

Trả lời

25

Hãy thử điều này:

Lazy<myClass> myLazy = new Lazy<myClass>(() => new myClass(InstanceName)); 

Hãy nhớ rằng biểu thức được đánh giá một cách lười biếng, vì vậy nếu bạn thay đổi giá trị của biến InstanceName trước khi xây dựng được gọi là nó có thể không làm những gì bạn mong đợi.

+0

Và với cùng một 'InstanceName' tôi sẽ lấy đối tượng từ bộ nhớ cache? – Xaqron

1

Bạn không thể, Lazy<T> yêu cầu một hàm tạo tham số. Tuy nhiên, bạn có thể sử dụng hàm tạo Lazy<T>(Func<T>), với phương thức khởi tạo lớp.

8

Lazy có hai cách để khởi tạo. Đầu tiên là sử dụng ctor mặc định của T (parameterless)

thứ hai là chấp nhận một Func có logic khởi tạo của khách hàng. bạn nên sử dụng quá tải thứ hai như đã đề cập ở đây

http://msdn.microsoft.com/en-us/library/dd642329.aspx

Các vấn đề liên quan