いくつかの基本を学ぶ時間です。
以下のコードを見てください。
protected void Button1_Click(object sender, EventArgs e)
{
List<string> a;
if(Session["data"] == null)
{
a = new List<string>();
a.Add("abc");
a.Add("def");
a.Add("ghi");
Session["data"] = a;
}
else
{
a = (Session["data"] as List<string>);
}
a.Add("jkl");
foreach (string s in a)
{
lblTest.Text += s + "<br />";
}
}
私がセッションで何かをしているコードビハインドには他にどこにもありません。このコードの予想される動作は、最初の実行 (クリック) セッションで "a" への参照を保持することです。ただし、上記の関数では「a」にはローカル スコープがあるため、どこかで「a」の値をセッションにコピーする必要があります。それはどこで起こりますか?関数が実行される前に発生しますか?それ以外の場所 (つまり、ページのアンロード、検証、レンダリング) ではリスト "a" が使用できないためです。では、割り当てられた、または参照された値は、いつ、どこでセッションに保存されるのでしょうか?