C#中编程问题
在form1中定义了public string dz;form2中form1 f=new();string w=f.dz;为什么w是空的啊?我是新手,求哪个高手帮帮忙。
追问:谢谢,dz的确不为空了,但我要怎样才能把filename的值给w啊?w一直为“ ”
SaveFileDialog sf = new SaveFileDialog();
sf.InitialDirectory = "c:\\";
sf.Filter = "txt(*.txt)|*.txt|rtf(*.rtf)|*.rtf|all files(*.*)|*.*";
sf.FilterIndex = 2;
sf.Title = "保存";
sf.RestoreDirectory = true;
if (sf.ShowDialog() == DialogResult.OK)
{
string filename = sf.FileName;
dz = filename;
StreamWriter sw = new StreamWriter(filename, true, Encoding.Default);
sw.Write(richTextBox1.Text);
sw.Close();
MessageBox.Show("以保存!");
}
答案:public string dz ; 你只是定义,你需要给他赋值,不然dz是不分配内存的。你如果public string dz=““;这样初始化下,dz 就不为空了。C#和java 一样,你定以后需要初始化后才会分配内存,如果是c/c++就不会。
string是引用类型 , 你未给dz赋值任何数值, 所以它不指向任何内存单元 , 还是先了解 什么是引用和数值类型,堆栈原理
姐,之前问你dz是哪来的你不说,你在form1中只定义了dz,并没有赋值,现在这样调用不是空是什么?
楼上说的很对哇~~你的DZ都木有值当然是空啦~~
public static string dz
form1 f=new form1()试问一下,form1,form2是什么?
NEW后面没别的了么?
form1中没有赋值
应该这样
///form1
public static string dz; //保存中间值
public void form1()
{
dz = "xxx";
form2 frm2 = new form2();
frm2.show();
}
///form2
public void form_load()
{
//获取FORM1中的DZ
string value = form1.dz.ToString();
//此时value为XXX
}
希望对你有帮助因为你没给你那个 字段DZ赋值当然是空的了因为你new一下 就相当于重新开辟了一段内存空间。所有的字段都是没有值的,除非加上static静态就可以了
上一个:c#的编程问题
下一个:C#编程```谁能做出来```100分拿去!!!!