.NET中静态变量的生命周期

时间:2010-09-28 15:50:55

标签: c# .net static

我有一个使用一些配置设置的扩展方法。我已将这些声明为static

public static class Extensions
{
    static string _mailServer = ConfigurationManager.AppSettings["MailServer"];
    // ... etc    

    public static void SendEmailConfirmation(this IOrder order) { }
}

我只是想检查一下这是否符合我的意图,因为我并不是百分之百确定。我的想法是,我不想继续阅读这些值,我希望它们能够被读取一次,并在Web应用程序的生命周期中进行缓存。这会发生什么?感谢

3 个答案:

答案 0 :(得分:16)

(根据KeithS的澄清更新,直到第一次使用才能阅读)

它们将在第一次使用时被读取,然后保留,直到AppDomain停止或回收,这可能是你想要的。

也就是说,ASP.NET应用程序在AppDomain中运行。这就是它们如何驻留并可用于多个请求,而无需为每个单独的请求启动。您可以配置它们的生存时间和回收时间等。静态变量与应用程序一起生存和死亡,因此只要应用程序驻留在应用程序域中,它就会存在。

答案 1 :(得分:1)

_mailServer将在第一次使用Extensions类时进行初始化(以任何方式)。在重新加载应用域之前,不会再次设置它。

答案 2 :(得分:1)

它们将在第一次需要时加载,然后保留在内存中,直到IIS回收应用程序。