(学习笔记)编写高质量代码改善建议-2.集合和LINQ
16. 元素数量可变的情况下不应使用数组a.如果需要一个动态可变长度的集合,应使有ArrayList或List<T>来创建b.在元素数量可变的情况下不应使用数组 17. 多数情况下使用foreach进行循环遍历 18. foreach不能代替fora.foreach不支持循环时对集合进行增删操作 19. 使用更有效的对象和集合初始化a.如 Personperson=new person(){Name=”Mike”, Age=20}; 20. 使用泛型集合代替非泛型集合a.不建议大家使用ArrayList类型,建设使用它们的泛型List<T>b.非泛型集合在System.Collections命名空间下,泛型集合在System.Collections.Generic下 21. 选择正确的集合a.如果集合的数目固定并不涉及转型,使用数组效率高,否则就使用List<T> 22. 确保集合的线程安全a.集合线程安全是指在多个线程上添加或删除元素时,线程之间必须保持同步b.在操作集合前,可以先锁定对象lock(sysObj) 23.避免将List<T>作为自定义集合类的基类 24.迭代器应该是只读的a.迭代器只有GetEnumerator方法 25.谨慎集合属性的可写操作a.如果集合属性没有值,则它返回的Count是0,而不是集合属性的值为null 26.使用匿名(Var)类型存储Linq查询结果 27.在查询中使用Lambda表达式 a.System命令空间定义了泛型委托Action,Func, Predicate b.Action用于执行一个操作,所以它没有返回值 c.Func用于执行一个操作并返回一个值 d.Predicate用于定义一组条件并判断参数是否符合条件e.Select方法接受的就是Func委托。运算符=>左边表示方法参数,右边是方法体28. 理解延迟求值和主动求值之间的区别 29. 区别LINQ查询中的IEnumerable<T>和IQueryable<T>a.本地数据源查询用IEnumerable<T>,远程数据源用IQueryable<T> 30. 使用LINQ取代集合中的比较器和迭代器 a.建议利用LINQ带来的便捷性,但仍需掌握比较器,迭代器,索引器原理 31. 在LINQ查询中避免不必要的迭代 a.实际编码中,要充分运用First和Take等方法
页:
[1]