【问题标题】:Lifespan of private property私有财产的寿命
【发布时间】:2015-12-20 07:52:16
【问题描述】:

试图找到答案,但我没有找到任何信息......

我已经根据以下示例构建了一个完整的属性:

private static Foo _foo;
public static Foo foo {
get 
{
   if (_foo!= null) 
      return _foo;

   //else do some logic and fill _foo;
   _foo = ....;
}};

问题是,根据页面的生命周期,_foo 什么时候会为空? 在第一次加载时,它当然会为空,但什么时候会再次为空?在回收?在iisreset上?还是页面重新加载?

此属性位于类库(外部 dll)上

【问题讨论】:

  • 链接问题中接受的答案是您问题的答案 - 尽管它与变量是否为 private 无关。
  • 不,这是一个关于 MVC 中的生命周期的问题,而不是关于 C# 静态的问题。
  • 旁注,该属性的正确命名是public static Foo Foo {...}

标签: c# asp.net-mvc


【解决方案1】:

根据页面的生命周期,_foo 什么时候会为空?在第一次加载时它当然会为空,但什么时候会再次为空?在回收?在iisreset上?还是页面重新加载?

它不绑定到页面,在 MVC 实例中数据是相对于请求的,静态数据绑定到应用程序实例。

每次重新启动应用程序时,它都会为空,即在 IIS 回收或重置时。

这使得static 数据在服务器应用程序中相当可疑。它可以用作一种简单的缓存形式,但请注意这不会“向外扩展”。每个服务器都有自己的副本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-17
    • 2023-03-17
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 2018-05-18
    相关资源
    最近更新 更多