Ví dụ 1 (không biên dịch):Làm thế nào để Lazy <T> nhận được xung quanh cần ràng buộc mới()?
void Main()
{
var c = new C<D>();
c.M.F();
}
class C<T>
{
T _m = null;
public T M { get {
if(_m == null) _m = new T();
return _m;
} }
}
class D
{
public void F() { Console.WriteLine ("i was created"); }
}
Kết quả:
Không thể tạo một thể hiện của kiểu biến 'T' bởi vì nó không có() ràng buộc mới
Ví dụ 2 (công trình):
void Main()
{
var c = new C<D>();
c.M.F();
}
class C<T>
{
Lazy<T> _m = new Lazy<T>();
public T M { get { return _m.Value; } }
}
class D
{
public void F() { Console.WriteLine ("i was created"); }
}
Resul t:
i was created