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

oll*_*lle 2 c#

我有一个aspx usercontrol

static readonly string foo = GetFromDB();
Run Code Online (Sandbox Code Playgroud)

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

Dar*_*rov 6

什么时候foo得到它的价值

当您第一次访问包含类并保证只执行一次时,它将在AppDomain的整个生命周期内保持不变.您可以在MSDN上查看有关静态字段初始化的以下文章:

类的静态字段变量初始值设定项对应于以它们出现在类声明中的文本顺序执行的赋值序列.如果类中存在静态构造函数(第10.11节),则在执行该静态构造函数之前立即执行静态字段初始值设定项.否则,静态字段初始化器在第一次使用该类的静态字段之前的实现相关时间执行.