类中静态只读变量的生命周期

时间:2011-01-05 09:56:56

标签: c#

我有一个带有

的aspx用户控件
static readonly string foo = GetFromDB();

现在我想知道foo的生命是什么。什么时候foo得到它的价值。每次创建usercontrol实例或只创建一次?想要知道的原因是GetFromDB可能会随着时间的推移返回不同的值。如果foo有一段时间的相同值,那很好。如果它永远不会更改,直到重新创建应用程序域,那就不是。

2 个答案:

答案 0 :(得分:6)

  

foo何时获得它的价值

当您第一次访问包含类并保证只执行一次时,它将在AppDomain的整个生命周期内保持不变。您可以在MSDN上查看关于static field initialization的以下文章:

  

静态字段变量初始值设定项   一个类对应于一个序列   在。中执行的作业   它们出现的文本顺序   类声明。如果是静态的   构造函数(第10.11节)存在于   类,执行静态   字段初始化程序立即发生   在执行该静态之前   构造函数。否则,静止   字段初始值设定项在a处执行   依赖于实现的时间   第一次使用静态场   那个班。

答案 1 :(得分:1)

只有在您访问该类型时才会初始化。