关于C#4.0中延迟功能的使用

时间:2011-07-11 06:19:21

标签: c#-4.0 lazy-initialization

我有一个像下面那样的Userdetails类

public class UserDetails
{
    public string ssn;

    public string username;

    public string emailid;

    public Address address;
}

此处地址是另一个具有公共字段的类,如

public class Address
{
    public int id;

    public string address;
}

现在,当用户登录应用程序时,我构造了Userdetails对象。现在我不会经常在userdetails中使用地址对象,但是有数据。

在这种情况下,我如何使用C#4.0的Lazy初始化功能。

请注意,数据来自直接数据库查询,并且这些类都没有构造函数或其他方法来获取数据。这些只是C#中数据库字段的表示。

建议我在这里使用延迟初始化的最佳方法。

1 个答案:

答案 0 :(得分:1)

您可以拥有一个私人懒人地址:

private Lazy<Address> _address = new Lazy<Address>(() => {
    ---code to get the address---
});

public Address address {
    get {
        return _address.Value;
    }    
}