据我所知,从WebConfigurationManager读取速度很慢,所以我想尽量减少使用它。在C#6.0中访问私有属性值而不创建它
说我有我的代码以下只读属性:
public string SiteLogo {
get {
return WebConfigurationManager.AppSettings["SITE_LOGO"];
}
}
在C#6.0中,我可以缩短这个使 “吸气剂” 的缺省值是:
public string SiteLogo { get; } = WebConfigurationManager.AppSettings["SITE_LOGO"];
此,它看起来像每次实例化类时都会调用,无论该属性是否曾经使用过。
它看起来像最有效的呼叫仍然声明私有变量在物业使用:
public string SiteLogo
{
get
{
if (String.IsNullOrEmpty(_siteLogo))
{
_siteLogo = WebConfigurationManager.AppSettings["SITE_LOGO"];
}
return _siteLogo;
}
}
private string _siteLogo;
这仍然需要我为我所有的干将,这似乎过于繁琐的创建私有变量。
我放弃了使用Session变量的想法,因为读取它并将其转换为String似乎仍然会产生更多开销。
我想看到的是一种方法来自动分配私有财产,如果需要的话。
如果被各酒店的私人领域#this
编译器,我可以用几行内容:
public string SiteLgo
{
get
{
if (String.IsNullOrEmpty(#this))
{
#this = WebConfigurationManager.AppSettings["SITE_LOGO"];
}
return #this;
}
}
更妙的是,我不应该在任何时候需要明确地告诉代码块返回的私有财产,因为也就是吸气的工作:
public string SiteLogo
{
get
{
if (String.IsNullOrEmpty(#this))
{
#this = WebConfigurationManager.AppSettings["SITE_LOGO"];
}
}
}
如果一种技术来做到这一点目前存在的,我不知道什么叫它来看看它的名字。
我错过了更好的方式来做我以后的事情(访问私有价值,而不必创建它)?
很难想出一个不做它的原因*静态*所以它只做过一次。你没有提到任何理由使它成为一个实例属性,所以这可能是你想要做的。 –
@HansPassant - 我....不知道。我想我会继续这样做。我仍然想知道访问这些专用自动属性的最佳方式。我看到'懒惰'的答案,这可能是我正在寻找的。不过,在这种特殊情况下,静态变量仍然会更好。 –
jp2code
你一直在说“我理解它很慢”,“看起来它仍然会产生更多的开销”。你真的衡量过性能吗? – svick