在C#中怎样将引用类型的变量按值类型传递?

来源:百度知道 编辑:UC知道 时间:2024/06/23 12:40:15
这是代码片段:
string str = ""
void Add(string str1)
{
str = str + str1;
}
string Getstring()
{
return str;
}
在执行了Add方法以后,再执行Getstring,的到的str是空,怎么办?
谢谢各位了。
那个分号是刚才提问时掉了,是返回的空的,这里要说明一点的就是这两个方法不是一起调用的,两个方法没有在一起调用!!
不是说还有第三个方法象这样
void Doing()
{
Add("dfasfda");
Getstring();
}
不是这样的哦。

是这样的
它有两个事件
string str = "";
protected void Button1_Click(object sender, EventArgs e)
{
str = str + "string";
}

protected void Button2_Click(object sender, EventArgs e)
{
textbox1.text = str;
}
这里在点了几次Button1后,再点Button2,textbox1的内容为空,这个怎么解决? 再次感谢!

除了你在声明str的时候少个分号外.我没看出哪儿错了.

而且在执行了Add()方法后.再调用Getstring()方法.是不能返回空的.你再看看你其它地方是否有错.

-------------------

如果是winform.你那么写是没有错的.一个按扭给赋值.一个按扭取值.

但如果是webform.你就得用ViewState了.

page_load中:
if(this.IsPostBack)return;
ViewState["data"]="aa";

button1中:ViewState["data"]=ViewState["data"].ToString()+"string";

button2中:this.TextBox1.Text=ViewState["data"].ToString();

由于那是两个事件执行的所以不能直接访问,在web中有两种方法:
1. static string str = ""; 将这个变量声明为静态变量
2.使用ViewState["str"]=""; 使用视图状态保存
textbox1.text = ViewState["str"].ToString()