この動作を示すために、非常に単純な Web サイトを用意しました。
1 つのボタンと次のコードを含む 1 つのページがあります。
public partial class TestStatic : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Class1.SetValue();
Label1.Text = Class1.st.ToString();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = Class1.st.ToString();
}
}
そして1つのクラス:
public class Class1
{
public Class1()
{
}
public static int st = 0;
public static void SetValue()
{
st = 1;
}
}
したがって、ページが読み込まれると、Label1 に st=1 が表示されます。ユーザーがボタンをクリックすると、st=0 と st=1 が表示されることがあります。デバッグでは、時々コマンドが表示されます
public static int st = 0;
ユーザーがボタンをクリックすると実行され、これが st がゼロに変更される理由です。この動作は、フレームワーク 4.5 でのみ再現できます。フレームワーク 3.5 では発生しません。誰かが私にそのような行動を説明できますか?