struct 的问题,请帮忙,谢谢
public struct df
{
public string headtext;
public string datafield;
}
Hashtable ht = new Hashtable();
private void Form1_Load(object sender, EventArgs e)
{
df mydf;
foreach (DataGridViewColumn dgvc in dataGridView1.Columns)
{
string col=dgvc.Name;
mydf.headtext = dgvc.HeaderText;
mydf.datafield = dgvc.DataPropertyName;
ht.Add(col, mydf);
}
}
private void button1_Click(object sender, EventArgs e)
{
foreach (DictionaryEntry de in ht)
{
MessageBox.Show(((df)de.Value).headtext);
}
}
问题:df mydf;
这个定义是放在foreach 外面还是里面,我测试了结果,程序运行结果都是一样的,请指教
------解决方案--------------------放在循环内或者循环外都一样,其实struct会分配在stack中,c#编译器会在struct第一次使用之前给它分配空间,即使你放在循环内,c#优化编译器也不会多次重复分配和回收struct的空间,
所以不论你放在循环内还是外,生成的代码都是一样的,不会有任何区别,
------解决方案--------------------ht.Add(col, mydf);
你是用这句填写的ht,本来就是全部保存了的。