优化内存和运行效率

  1. 用 GetEnumerator () 遍历 dictionary 和 list ,避免使用 foreach
  2. dictionary 使用 TryGetValue 一次判断取值,避免两次访问
  3. 值类型使用引用方式传递,可提高效率 ref
  4. 避免无意义的初始化,C# 默认初始化是清除内存,所以无意的初始化,会增加内存
  5. 字符串判断,使用比较 length == 0 效率更高
  6. cahe 数据,可以避免反复访问;
  7. 减少字符串的拼接,每次拼接都会产生新的字符串,产生 CG
  8. 常量使用 const 或 readonly 修饰
  9. 用 using 包裹,可自动调用 Dispose

结语

C# 语言的  ​​foreach​​  语句(在 Visual Basic 中为  ​​For Each​​)隐藏了枚举数的复杂性。因此,建议使用  ​​foreach​​,而不是直接操作枚举数。
枚举器可用于读取集合中的数据,但不能用于修改基础集合。
最初,枚举数定位在集合中第一个元素的前面。 Reset 方法还将枚举器恢复到此位置。在此位置, Current  属性未定义。因此,在读取的值之前,必须调用  MoveNext  方法,以将枚举器前进到集合的第一个元素  Current 。
在调用  Current  或  MoveNext  之前,Reset  返回同一对象。 MoveNext  将  Current  设置为下一个元素。
如果  MoveNext  越过集合的末尾,则枚举器将定位在集合中最后一个元素之后,并  MoveNext  返回  ​​false​​ 。当枚举器位于此位置时,对的后续调用  MoveNext  也将返回  ​​false​​ 。如果最后一次调用  MoveNext  返回  ​​false​​ , Current  则未定义。若要再次将  Current  设置为集合的第一个元素,可以调用  Reset  并接着调用  MoveNext。
如果对集合所做的更改(如添加、修改或删除元素),则枚举器的行为是不确定的。
枚举数没有对集合的独占访问权;因此,从头到尾对一个集合进行枚举在本质上不是一个线程安全的过程。若要确保枚举过程中的线程安全性,可以在整个枚举过程中锁定集合。若要允许多个线程访问集合以进行读写操作,则必须实现自己的同步。