高手进,在线等!关于如何定义数据!
我要写类似于Windows桌面的程序。
每个图标对应了一个结构
public struct iItem
{
public PictureBox ptBox;
public string strText;
public Image img;
public bool bParent;
public Point pt;
public ArrayList childs;
public string dll;
public string funcname;
public bool bSelect;
}
public ArrayList lists;
现在的问题:结构是值传递的,我如果修改了某个变量。还要把改变后的iItem再加进到lists里面。
例如:iItem item = (iItem)lists[0];
item.bSelect = ture;
lists[0] = item;
真是太麻烦了,如果我用类来定义这个数据结构,会不会效率比较低?如果有做过类似程序的,都怎么定义数据结构的?谢谢!
------解决方案--------------------自定义的 class, 而不是这样的结构体、也不要使用这样的List。
List 就是这样,除非你自己实现一个。
------解决方案--------------------在你的结构中加一个方法
public struct iItem
{
public PictureBox ptBox;
public string strText;
public Image img;
public bool bParent;
public Point pt;
public ArrayList childs;
public string dll;
public string funcname;
public bool bSelect;
public void SetValue(iItem value)
{
this.ptBox = value.picture;
this.strText = value.strText;
......
}
}
写一次就行了以后就
iItem item = (iItem)lists[0];
item.bSelect = ture;
lists[0].SetValue(item);
要不就用运算符号重载,你以后用c++的这个应该没问题吧
------解决方案--------------------结构是值类型的添加到一般的集合中要进行装箱,使用时取出来又要拆箱,拆箱后的值是不可能又给你装箱的,解决办法:
1: 使用class,class不会使效率降低,要存入集合中,反而性能会提高,因为避免了装箱拆箱的动作.
2: C#2.0的话如果坚持要用结构,建议你可以使用范型集合,比如说List.