我有一个带有
的aspx用户控件static readonly string foo = GetFromDB();
现在我想知道foo的生命是什么。什么时候foo得到它的价值。每次创建usercontrol实例或只创建一次?想要知道的原因是GetFromDB可能会随着时间的推移返回不同的值。如果foo有一段时间的相同值,那很好。如果它永远不会更改,直到重新创建应用程序域,那就不是。
答案 0 :(得分:6)
foo何时获得它的价值
当您第一次访问包含类并保证只执行一次时,它将在AppDomain的整个生命周期内保持不变。您可以在MSDN上查看关于static field initialization的以下文章:
静态字段变量初始值设定项 一个类对应于一个序列 在。中执行的作业 它们出现的文本顺序 类声明。如果是静态的 构造函数(第10.11节)存在于 类,执行静态 字段初始化程序立即发生 在执行该静态之前 构造函数。否则,静止 字段初始值设定项在a处执行 依赖于实现的时间 第一次使用静态场 那个班。
答案 1 :(得分:1)
只有在您访问该类型时才会初始化。