第一组:刘聪 String 与StringBuilder
在.NET中String其实是是不可改变对象,一旦创建了一个String对象并给它赋值,它就不可能再改变。看下面的这段代码:
输出:
看起来我们似乎已经把s的值从"1234"改为了"12345678",实际上并没有改变。string s = "1234";是创建了一个String对象它的值是"1234",s指向了它在内存中的地址,s += "5678";是创建了一个新的String对象它的值是"12345678",s指向了新的内存地址。这时在堆中其实存在着两个字符串对象,尽管我们只引用了他们中的一个,但字符串"1234"仍然在内存中驻留。
因此String类型在做字符串的连接操作时,效率是相当低的,并且由于每做一个连接操作,都会在内存中创建一个新的对象,占用了大量的内存空间。
StringBuilder对象在做字符串连接操作时是在原来的字符串上进行修改,改善了性能。这一点我们平时使用中也许都知道,连接操作频繁的时候建议使用StringBuilder对象。
第二组:暂无
第三组:吴景霞 测试过程中可能遇到的问题
1. 未将对象引用到具体的实例:
可能造成该类型错误的实例和其解决方案有:
(1) 将null赋给string类型的字段:
数据库中或传进来的参数对应字段类型为null时,如果直接赋给string类型的字段,会报错,需要额外加一条判断语句:
这种写法等同于:
(2) 给类赋值的时候没有事先new:
在给para的UISearchPages这个类进行赋值的时候,如果直接使用赋值语句:
会报错,需要实现进行new操作:
2. 没有数据:
(1) 当使用框架自带的SelectById方法时,如果在数据库中找不到该方法,会报错:
(2) 使用SelectOne()操作时,如果数据库中查找不出符合搜索条件的数据,会报错:
可以实现进行判断,如果搜索不到值,则返回null:
3. 找不到特定的列:
某张数据表中,数据库中的字段和Model表中字段相比,有缺失,推荐检错方法是使用SQL语句单独查找该表中的每一个Model表字段,看是否有缺失情况
第四组:傅云 用EXCEL生成SQL语句
第五组:王炳钧 DevExpress GridControl 动态增加行
参考网址: http://blog.csdn.net/jjhua/article/details/7799885
DevExpress XtraGrid 添加新的一行时,数据源DataSource如果是DataTable可以用AddNewRow方法,然后UpdateCurrentRow。但是如果DataSource的来源是List<T>,用AddNewRow是不起作用的,这时候需要将List<T>转换为BindingList<T>,才可以采用AddNewRow。
List<T> to BindingList<T>直接用构造函数就可以:
List<T> source=new List<T>();
BindingList<T> temp=new BindingList<T>(source);
然后通过反射逐个根据源数据行对新加行赋值
gvSelected.AddNewRow();
object destinationRow = gvSelected.GetFocusedRow();
object sourceRow = gvOriginal.GetRow(i);
System.Reflection.PropertyInfo[] propertyCollection = sourceRow.GetType().GetProperties();
foreach (System.Reflection.PropertyInfo propertyInfo in propertyCollection)
{
destinationRow.GetType().GetProperty(propertyInfo.Name).SetValue(
destinationRow, sourceRow.GetType().GetProperty(propertyInfo.Name).GetValue(sourceRow,null), null);
}
gvSelected.UpdateCurrentRow();