3

この動作を示すために、非常に単純な 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 では発生しません。誰かが私にそのような行動を説明できますか?

4

2 に答える 2