开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 3683|回复: 0

[教程] (学习笔记)编写高质量代码改善建议-2.集合和LINQ

[复制链接]

0

精华

730

贡献

2919

赞扬

正版授权组

Rank: 14Rank: 14Rank: 14Rank: 14

帖子
413
软币
15859
在线时间
2986 小时
注册时间
2013-6-8

饮水勋章神经正常武林秘籍

发表于 2013-7-4 10:48:40 | 显示全部楼层 |阅读模式
16. 元素数量可变的情况下不应使用数组
  a.如果需要一个动态可变长度的集合,应使有ArrayListList<T>来创建
  b.在元素数量可变的情况下不应使用数组
17. 多数情况下使用foreach进行循环遍历
18. foreach不能代替for
  a.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.如果集合属性没有值,则它返回的Count0,而不是集合属性的值为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.实际编码中,要充分运用FirstTake等方法

评分

参与人数 1贡献 +1 赞扬 +1 收起 理由
羽叶 + 1 + 1

查看全部评分

回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-5-3 15:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表