在方法的 return 值内保留从文件获取的值

Retaining a value obtained from file within the return value of a method

假设我需要通过不同的方法多次访问给定文件中包含的值,我可以在方法中包含某种布尔值以确定调用文件?

假设我有文件 config.cfg。在那个文件中,有三个值:

string/name>max|
bool/adult>yes|
int/age>20|

方法getUserName()returns值"max"。它通过调用文件来做到这一点:

using (StreamReader reader = new StreamReader(path))
{
    //get line beginning with string/name here
    return //string value containing name
}

假设我需要多次使用 name 的值,以及 isAdultclientAge 的值。与其一遍又一遍地访问文件,不如以某种形式的静态变量保存请求的值会容易得多。但是,当第一次调用该方法时,此变量的值仍需要至少更改一次。

我可以在 方法 getUserName() 中执行此操作吗?
此外,这个想法在 OOP 的范围内是否可行?是不是和Prefetch类似的概念?

创建静态 class。像这样:

 public static class ClientConfig{

    public static string Name{get;set;}
    public static bool IsAdult{get;set;}
    public static int Age{get;set;}

     public static void Load(){
     // load your values 
    // ClientConfig.Name = name from file etc.
    }


    public static void Save(string newName, int age, bool value){
     // save your values to the config file
    }
    }

并在您的应用首次启动时调用 ClientConfig.Load(),例如(或每当您需要检索配置数据时)

在我看来,您确实需要以惰性方式访问字段(即仅在需要时,在需要时)。如果是这样,.NET 有 Lazy class 用于这种情况,它还提供开箱即用的线程安全性:

public static Lazy<string> Name { get; } = new Lazy<string>(() => ReadNameFromFile());

Lazy 还将确保您只创建一次值(即调用初始化方法),在以后的调用中它会简单地return 已经检索到值。