C# 4.0 关于C#4.0中惰性特性的使用

C# 4.0 关于C#4.0中惰性特性的使用,c#-4.0,lazy-initialization,C# 4.0,Lazy Initialization,我有一个Userdetails类,如下所示 public class UserDetails { public string ssn; public string username; public string emailid; public Address address; } 这里Address是另一个类,它将具有公共字段,如 public class Address { public int id; public string ad

我有一个Userdetails类,如下所示

public class UserDetails
{
    public string ssn;

    public string username;

    public string emailid;

    public Address address;
}
这里Address是另一个类,它将具有公共字段,如

public class Address
{
    public int id;

    public string address;
}
现在,当用户登录应用程序时,我构造Userdetails对象。现在我不会经常在userdetails中使用address对象,而是已经获得了数据

在这个场景中,我如何使用C#4.0的延迟初始化特性

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


建议我在此处使用惰性初始化的最佳方法。

您可以拥有一个专用惰性地址:

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

public Address address {
    get {
        return _address.Value;
    }    
}
private Lazy\u address=new Lazy(()=>{
---获取地址的代码---
});
公共广播{
得到{
返回_address.Value;
}    
}

当我基本上设置地址时,我必须使用该值,这意味着我无法获得延迟初始化的好处。希望你明白我的意思。