C# 私人财产的寿命

C# 私人财产的寿命,c#,asp.net-mvc,C#,Asp.net Mvc,试图找到答案,但我没有找到任何信息 我基于以下示例构建了完整的属性: private static Foo _foo; public static Foo foo { get { if (_foo!= null) return _foo; //else do some logic and fill _foo; _foo = ....; }}; 问题是,根据页面上的生命周期,什么时候u foo将为空? 在第一次加载时,它当然会为空,但什么时候它会再次为空?回收

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

我基于以下示例构建了完整的属性:

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

   //else do some logic and fill _foo;
   _foo = ....;
}};
问题是,根据页面上的生命周期,什么时候u foo将为空? 在第一次加载时,它当然会为空,但什么时候它会再次为空?回收利用?在iisreset上?还是重新加载页面

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

根据页面上的寿命,什么时候\u foo将为空?在第一次加载时,它当然会为空,但什么时候它会再次为空?回收利用?在iisreset上?还是重新加载页面

它不绑定到页面,在MVC中,实例数据与请求相关,静态数据绑定到应用程序实例

每次重新启动应用程序时(即IIS回收或重置时),该值都将为null


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

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