我遇到过这段代码,看起来原始开发人员试图使用静态字符串在静态类中缓存值。
public static class GetStringFromSomeProcess
{
private static string theAnswer;
public static string GetString
{
get
{
if(theAnswer == null)
{
theAnswer = GoGetTheAnswerFromALongRunningProcess();
}
return theAnswer;
}
}
}
据我所知,这是行不通的,因为您无法实例化
GetStringFromSomeProcess
类,每次使用GoGetTheAnswerFromALongRunningProcess
时都会调用GetString
。我想念什么吗? 最佳答案
您说对了,该类无法实例化,但是该类将存在于应用程序中。
因此,只有在第一次访问该属性时,才会调用方法GetStringFromSomeProcess
。此后每隔两次,对== null
的检查将解析为false
,并且将返回第一个调用评估的值。