【发布时间】:2015-08-17 13:43:20
【问题描述】:
我在设置某些属性时遵循一种模式,我检查相应的字段是否为空,如果不是则返回该字段,如果是则设置它。例如,我经常使用它来读取配置设置,以便懒惰地读取设置并且只读取一次。这是一个例子:
private string DatabaseId
{
get
{
if (string.IsNullOrEmpty(databaseId))
{
databaseId = CloudConfigurationManager.GetSetting("database");
}
return databaseId;
}
}
我已经开始使用 C# 6 自动属性初始化,因为它确实可以清理并使我的代码更加简洁。我想做这样的事情:
private string DatabaseId { get; } = CloudConfigurationManager.GetSetting("database");
但我不确定在这种情况下编译器如何解释它。这是否与我的第一个代码块具有相同的效果,设置一次(自动实现的)字段,然后从该字段中读取?还是每次我收到DatabaseId 时都会调用CloudConfigurationManager?
【问题讨论】:
-
是的,它是一个初始化器,以避免所有代码
-
@Ivan 尝试将对
CloudConfigurationManager.GetSetting("database")的调用包装在另一个函数中,在其上放置一个断点,并查看它是否被多次调用。
标签: c# automatic-properties c#-6.0