用foreach in 迭代访问集合中的项。
1.foreach和In可以用在任何实现了system.collections.IEnumerable接口的类型上。
2.我们要确保在遍历集合的元素时,集合的大小不会改变,也就是说,程序中的不同线程对集合的
访问必须同步。
3.当用foreach in 遍历二维数组时,采取行优先原则,即[0][0],[0][1]....,[1][0],[1][1]
4.在foreach循环中定义的变量是只读的,但可以调用这些对象的方法和属性,由他们在内部
去改变对象的状态。

posted @ 2009-04-16 22:08 PeterLau 阅读(19) 评论(0) 编辑
摘要: 使用属性,避免将数据成员直接暴露给外界 Item:Always Use Properties Instead of Accessible Data Members. 阅读全文
posted @ 2009-04-16 22:07 PeterLau 阅读(352) 评论(1) 编辑

       System.Array类实现了IEnumerable,ICollection和Iist接口,但不是所有System.Array都实现上述接口的泛型形式。这是为什么呢?(用小沈阳的话说)。这是因为多维数组和非0基数组的问题,同时,为System.Array定义这些接口,会让所有数组类型启用这些接口。CLR在这上面耍了一个小花招,在创建一个一维0基数组时,CLR让该数组自动实现IEnumerable<T>,ICollection<T>,Ilist<T>.

      如果这个数组是引用类型的数组,那么这个数组类型的所有基类型也都实现了这三个接口,那么这个数组的元素可以隐式转换为其基类的相应接口类型。如果数组时值类型数组,那么不会实现这些接口在System.ValueType或System.Object上的泛型版本。这是因为值类型数组在内存中的布局与引用类型的数组不同。

posted @ 2009-04-16 22:04 PeterLau 阅读(563) 评论(2) 编辑