我遇到过这段代码,看起来原始开发人员试图使用静态字符串在静态类中缓存值。

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,并且将返回第一个调用评估的值。

07-24 19:19