一个对你们来说很简单的问题,谢谢:)
你们好,我以前需要在各方法之间共用一个变量,有人告诉我用private System.Windows.Forms.MenuItem menuItem5;
private System.Windows.Forms.MenuItem menuItem6;
protected string start
{
get { return (ViewState["start"] == null) ? "abc" : ViewState["start"].ToString(); }
set { ViewState["start"] = value; }
}
可以在各方法间传递这个变量
后来发现用
private System.Windows.Forms.MenuItem menuItem5;
private System.Windows.Forms.MenuItem menuItem6;
string start = "abc" ;
也可以实现,请问以上两种方法有何区别? --------------------编程问答-------------------- 第一种形式可以在本页刷新时保留原值,因为ViewState是页面级变量;
第二种刷新后就丢失了 --------------------编程问答-------------------- 别人告诉你的方法是一种好的编程习惯,用一个属性描述一个成员可以在取值的时候进行判断,可以避免很多问题,楼主自己发现的方法是声明一个成员变量的方式,在各方法中传来传去的时候不保证会出现意外情况,容易出问题。 --------------------编程问答-------------------- 汗,第一个是asp.net的
第二个是 winform的.天那~~~~
如果是asp.net建议小量的数据使用viewstate或者 session或者cookie
如果是比较大量的数据,建议使用cache
像我曾经写过一的个程序,从数据库读出一个Dataset,为了要对Grid进行排序,需要把它保存起来,于是用了ViewState,结果一个4000条数据的页面,有近10MB大~~~
如果你是Form,更加简单了
可以定义一个公共变量就行了.同一个Form里面,就把它照你第二种方法写.
如果是不同的Form之间,最好使用共开的属性或者方法.
比方说
private string _myvar="我是变量";
public string myVar
{
get{return _myvar;}
set{_myvar=value;}
} --------------------编程问答-------------------- 我是在做Windows Forms时用的,不是在asp.net中,应该不会涉及到刷新的问题吧? --------------------编程问答--------------------
如果是winForm的话,你就写在 public partial class Form1 : Form {的下面好了,它是一个Form级别的变量,在本Form用都可以使用它 --------------------编程问答-------------------- 你这个是用在webform上的,winform的话建议直接 private string avc= null; 的传就行了
webform用viewstate或者session 比较好。
补充:.NET技术 , C#