眼下遇到这样一个问题:有两个void型的click函数,其实一个按扭click后要返回一个数组,这个数组在第二个按扭的click事件中要用到,可是这是两个void型函数,所以打算在这两个函数所在的类里定义一个数组,在第一个click事件里把值传给这个数组,在第二个函数里使用这个数组,可是发现,第一个赋值操作是成功的,可惜事件执行后,值并没有能传出来,请教是怎么回事,怎么才能实现我想达到的效果。
大概的代码结构是这样的
class a
{
  private string[] ,str;
  private void Btn1_click(sender ,e);
  {
   str=new string[3]{"1","2","3"};
   }
  private void Btn2_click(sender ,e);
  {
   string a = str[2];
  }
}
以前都是玩c的,突然遇到这种情况,不知所措,希望大侠指点

解决方案 »

  1.   

    private string[] ,str; 这句话多了一个逗号“,”
      

  2.   

    class a
    {
      private string[] str=new string[3];
      private void Btn1_click(sender ,e);
      {
         str[0]="1";
         str[1]="2";
         str[2]="3";
       }
      private void Btn2_click(sender ,e);
      {
       string a = str[2];
      }
    }
    用这个吧
      

  3.   

    private void Btn2_click(sender ,e);
      {
       string a = str[2];//注意这里的a变量只能在这个方法里用
      }
      

  4.   

    class a
    {
      private string[] str;
      private void Btn1_click(sender ,e);
      {
       str=new string[3]{"1","2","3"};
       }
      private void Btn2_click(sender ,e);
      {
       string a = str[2];
      }
    }
    如果你确实是这样写的,应该没问题
      

  5.   

    str前面那个逗号是我误敲的,不好意思。那个string a= str[2];也不该写a ,我只是示意一下,原程序不是这样写的。运行结果我在第一个和第二个函数里加了foreach来显示字符串,前一个是有的,后一个显示不出;修改如下:
    class a
    {
      private string[] str;
      private void Btn1_click(sender ,e);
      {
       str=new string[3]{"1","2","3"};
       foreach(string s in str)
       console.writeline(s);//可以打出结果;
       }
      private void Btn2_click(sender ,e);
      {
        foreach(string s in str)//出错,未将引用对象赋给实例?
       console.writeline(s);
       string b = str[2];
       
      }
    }
    再次请教。
      

  6.   

    如果你是在用asp.net,(至于widows form或者其他的什么情况,没试过,不知道。嘿嘿。)
    那么由于web是“无状态”的,你每次提交页面后,前一次在服务器端赋的值将不被保存。
    解决方法是用viewstate保存状态。类似这样:
    protected int _QestionID = 0;
    public int QestionID
    {
    get 

    if(_QestionID > 0)
    {
    return _QestionID;
    }
    else if(this.ViewState["QestionID"] == null)
    {
    return 0;
    }
    else
    {
    try
    {
    _QestionID = (int)ViewState["QestionID"]; 
    return _QestionID;
    }
    catch
    {
    return 0;
    }
    }
    }
    set { this.ViewState["QestionID"] = _QestionID = value; }
    }
      

  7.   

    兄弟,没有问题呀!
    执行顺序是这样的,先点Btn1-->Btn2,就出来了
    我估计你是点了Btn2,但是之前没有点Btn1才会出这样的情况的,点了Btn1才会有数组的创建已经赋值的
      

  8.   

    用N_ccw(N神)的方法既可以解决吧....
      

  9.   

    由于你实例str 数组是在Btn1_click()里,这样你就必须先执行此方法再去执行其它所有用到
    str 数组的方法,不然就会出现“出错,未将引用对象赋给实例?”的错误。