摘要: 1.以引用的方式向方法传递参数ref和out达到效果,传递的是参数的地址而不是参数本身.从CLR的角度看,ref和out完全一致.会生成相同的IL代码.元数据几乎完全一致,只有一个bit除外,以区分这两种情况.为值类型使用out和ref,等同于为引用类型使用传值的方式(普通的方式).以引用的方式传递参数,需要参数类型和方法签名的类型完全相同,哪怕是基类也不行2. 数量可变参数 params如果传递的不是null,会有一定的性能损失.因为在底层中会在堆上分配一个数组,最后垃圾回收.IL中方法会被添加ParamArrayAttribute属性.编译器会优先查找没有可变参数的方法,其次才会查找可变参 阅读全文
posted @ 2013-12-18 12:32 平常心队长 阅读(174) 评论(0) 推荐(0)
摘要: 1. 泛型优势:源代码保护类型安全更加清晰的代码更佳的性能.(减少装箱和拆箱的操作)2. Wintellect 的Power Collections库C++的标准模板库的部分集合类3.泛型基础结构开放类型和封闭类型一个泛型的所有类型实参传递的都是实际的数据类型,则成为封闭类型.具有泛型类型参数的类型成为开放类型,CLR禁止构造开放类型的实例.类似禁止构造接口实例.如:var t=typeof(Dictionary); var o=CreateInstance(t);这样是不行的.需要制定类型之后在构造.CLR会为类型对象分配静态字段,对于泛型,List和List,有各自的静态字段,是独立的.如 阅读全文
posted @ 2013-12-18 12:32 平常心队长 阅读(132) 评论(0) 推荐(0)
摘要: DataGridView中checkbox的值读取问题.checkbox选中之后,在CellClick事件中通过Value是读取不到值的,在当前单元格变为另一个单元格之前,它的值不会写到DataGridView的数据源中去,只能取其所要表示的值,在DataGridViewCheckBoxCell中,可以使用EditingCellFormattedValue来得到当前的单元格要表示的被格式化的值.因为CellClick的发生在值改变之前,所以只能得到单元格在由鼠标改变之前的值.DatagridView CurrentRow是只读的,CurrentCell是可读可写的.可设置CurrentCell 阅读全文
posted @ 2013-12-18 09:30 平常心队长 阅读(367) 评论(0) 推荐(0)