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

标签 c# .net static

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

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

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

我只是想检查这是否按照我的意图进行,因为我不能 100% 确定。我的想法是我不想一直读取这些值,我希望它们被读取一次并在 Web 应用程序的生命周期内缓存。这是会发生什么吗?谢谢

最佳答案

(更新了 KeithS 的澄清,即它们在首次使用之前不会被阅读)

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

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

关于c# - .NET 中静态变量的生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3814608/

相关文章:

c# - 如何在 C# 中截取全尺寸窗口的屏幕截图

java - Spring:为静态属性注入(inject)bean时出现NullPointerException

java - 在 Java 中使用常量 : How to log the name given to them?

具有函数指针常量数组的 C++ 模板化静态类

c# - 使用 Moq 是否毫无意义,因为 Returns() 重新定义了您的方法的行为?

c# - 查找当前 Windows 应用程序

c# - 将 HTML 文件读入内存中的字符串变量

C# 泛型,除非明确指定,否则比较 2 个字符串失败

.net - 是否有常用的不符合 CLS 的 .NET 语言?

.net - 微软自己的面向文档的数据库版本?