当前位置:编程学习 > C#/ASP.NET >>

一个对你们来说很简单的问题,谢谢:)

你们好,我以前需要在各方法之间共用一个变量,有人告诉我用 
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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,