日期:2014-05-18  浏览次数:20738 次

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,本来就是全部保存了的。