在设置属性之前检查null时,.net会加载属性

时间:2013-10-21 21:56:15

标签: c# .net mvvm

private CompanySetting _companySettings= null;
    public CompanySetting CompanySettings
    {
        get
        {          
            _companySettings = _companySettings ?? getCompanySettings();
            return _companySettings;
        }
        set
        {
            _companySettings = value;
        }
    }

我的viewmode中有以上属性。我开始注意到,当我实例化此类时,如果不调用属性的get方法,则会自动设置该属性。这意味着调用了getCompanySettings,从而加载了companysettings属性。 我甚至在getCompanySettings方法中放了一个断点,我知道它没有在那里打破。这是.net的事吗?

1 个答案:

答案 0 :(得分:2)

如果您使用的是Visual Studio调试器,它可能配置为自动评估属性getter,因为它们被认为是纯粹的(即没有评估它们的副作用)。如果你有一个 not 这样的属性getter,你需要添加DebuggerBrowsableAttribute属性以防止它被调试器评估。

[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public CompanySetting CompanySettings
{
    get
    {          
        _companySettings = _companySettings ?? getCompanySettings();
        return _companySettings;
    }
    set
    {
        _companySettings = value;
    }
}