asp.net:是否每次回发到页面时都会调用静态构造函数?
这可能是的重复,但我的查询有点不同 我有一个网页名为default.aspx的web应用程序。我有一个带有静态构造函数和静态属性“MyProperty”的公共静态类“MyClass”,该类在default.aspx.cs类之外 静态类的属性是在页面加载和单击按钮时分配的 现在,我知道,每当调用或分配类的任何属性时,类型的静态构造函数只会被调用一次。这是根据asp.net:是否每次回发到页面时都会调用静态构造函数?,asp.net,static,static-classes,static-constructor,static-class,Asp.net,Static,Static Classes,Static Constructor,Static Class,这可能是的重复,但我的查询有点不同 我有一个网页名为default.aspx的web应用程序。我有一个带有静态构造函数和静态属性“MyProperty”的公共静态类“MyClass”,该类在default.aspx.cs类之外 静态类的属性是在页面加载和单击按钮时分配的 现在,我知道,每当调用或分配类的任何属性时,类型的静态构造函数只会被调用一次。这是根据AppDomain。之后,静态构造函数将永远不会被调用 我还知道应用程序域是一个.NET构造,它在进程中加载的程序集之间提供了一个隔离层 所以
AppDomain
。之后,静态构造函数将永远不会被调用
我还知道应用程序域是一个.NET构造,它在进程中加载的程序集之间提供了一个隔离层
所以我的问题是
AppDomain
?任何相关链接也会有所帮助静态构造函数只会被调用一次,而不是每次回发(正如您也看到的),我认为您不应该期望基于浏览器或IIS的任何不同行为 应用程序域在这里并不真正相关。但是,如果你的好奇心正在扼杀你: 事实是,静态构造函数要么被调用零次,要么被调用一次;但每次运行任何应用程序时,都不能超过此值 静态构造函数在应用程序运行时第一次引用类时被调用。除非重新启动应用程序,否则将不会再次调用它。如果从未使用该类,则永远不会调用静态构造函数
所以基本上,你在问题中描述的行为是完全有道理的。页面对象每次都会被重新加载,但是静态构造函数只会被调用一次。优秀文章!非常感谢,它消除了我所有的疑虑(暂时):)
public static class MyClass
{
public static int MyProperty { get; set; }
static MyClass()
{
}
}
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
MyClass.MyProperty = 2;
}
protected void Button1_Click(object sender, EventArgs e)
{
MyClass.MyProperty = 1;
}
}