眼下遇到这样一个问题:有两个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的,突然遇到这种情况,不知所措,希望大侠指点
大概的代码结构是这样的
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的,突然遇到这种情况,不知所措,希望大侠指点
{
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];
}
}
用这个吧
{
string a = str[2];//注意这里的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];
}
}
如果你确实是这样写的,应该没问题
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];
}
}
再次请教。
那么由于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; }
}
执行顺序是这样的,先点Btn1-->Btn2,就出来了
我估计你是点了Btn2,但是之前没有点Btn1才会出这样的情况的,点了Btn1才会有数组的创建已经赋值的
str 数组的方法,不然就会出现“出错,未将引用对象赋给实例?”的错误。