日期:2014-05-17  浏览次数:20763 次

疑惑的static变量 C#
看这段代码:
public partial class _Default : System.Web.UI.Page 
{
  protected void Page_Load(object sender, EventArgs e)
  {

  }
  static string strhobby = "";
  protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
  {  
  foreach (ListItem item in ListBox1.Items)
  {  
  if (item.Selected)
  {
  strhobby += item.Value+" ";
  }
  }
  Label1.Text = strhobby;
  }
}
这是一段服务器端代码。在客户端上,有一个下拉列表框,当点击下拉列表中的内容的时候,下面显示一个,在点一个,有在原来的基础上添加一个。由于现在是静态变量,可以做到,但是问题在于,这个静态变量strhobby不会被释放。当下次运行这个页面时,一旦你激发ListBox1时,上次的操作结果还会出现在下载的页面上。怎样释放这个变量呢?

------解决方案--------------------
那就去掉 static 啊,采用ViewState存储或者Cookie
------解决方案--------------------
ViewState其实就是页面中一个隐藏标签,所有web控件上的数据都是用ViewState进行自动存储的,你也可以调用ViewState存储自定义数据,而这些数据都会存放在客户端的最终输出页面内,以隐藏标签页的形式存在,最终也会增加来回传输的数据量