假设我需要访问给定文件中包含的值很少次,从不同的方法,我可以在方法中包含某种布尔值来确定是否适合调用该文件?
假设我有 config.cfg 文件。在该文件中,有三个值:
string/name>max|
bool/adult>yes|
int/age>20|
方法getUserName()
返回"max"
的值。它通过调用文件来执行此操作:
using (StreamReader reader = new StreamReader(path))
{
//get line beginning with string/name here
return //string value containing name
}
我们假设我需要多次使用name
的值,以及值isAdult
和clientAge
。不是一遍又一遍地访问文件,而是以某种形式的静态变量保存所请求的值要容易得多。但是,当首次调用该方法时,此变量仍需要至少更改一次值。
我可以在里面方法getUserName()
吗?
此外,这个想法甚至可能在OOP的范围内吗?它与Prefetch的概念类似吗?
答案 0 :(得分:0)
创建一个静态类。像这样:
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()(或者无论何时需要检索配置数据)
答案 1 :(得分:0)
我真的希望你需要以懒惰的方式访问一个字段(即只在需要时才需要)。如果是这样,.NET就会为这种情况提供Lazy类,它也可以提供开箱即用的线程安全性:
Each
Lazy还将确保您只创建一次值(即调用初始化方法),并且稍后调用它将只返回已检索到的值。