改善C#程序的50种方法.doc
从去年找工作以来,都没什么时间写博客[找工作的体会:建议以后有自己开公司的IT人一定要找IT专业人员做HR,好多公司的HR并不能真正发掘人才,他们形成了太多的偏见,如在学校期间学不了什么东西、只看学校有多少奖励等。真正钻研技术的人才不会追求虚无的东西],其实这本书我都借了好久,一直没有系统的看,所以趁这两天好好看看,顺便总结了一些要点,给那些需要这方面知识而又没有太多时间的IT人一个快速的学习机会。 【改善C#程序的50种方法】 C#编程实践中,优化代码质量是提升软件性能的关键。以下是一些从《改善C#程序的50种方法》中提取的关键点: 1. **用属性代替可访问的字段** - 属性在.NET数据绑定中扮演重要角色,提供了数据绑定支持。 - 在属性的get和set访问器中可以添加lock语句,以实现多线程安全。 2. **readonly和const的区别** - const只能用于基本类型、枚举和字符串,而readonly可以用于任何类型。 - const在编译时就替换为常量值,若与readonly一起使用可能导致设计错误,需要重新编译以更新引用。 - const在效率上优于readonly,但牺牲了灵活性。 3. **is与as操作符** - is用于判断对象是否能转换为指定类型,as则用于安全类型转换,仅适用于引用类型。 - 通常推荐先用is判断,再根据需要使用as或强类型转换。 4. **ConditionalAttribute替代#if #endif** - ConditionalAttribute适用于方法级别的条件编译,而#if #endif更通用。 - ConditionalAttribute支持多个条件或运算,而#if #endif支持与运算。 - ConditionalAttribute可以提供更灵活的代码组织。 5. **提供ToString()方法** - 提供ToString()方法可以方便地向用户显示详细信息。 - 使用IFormatter.ToString()可以实现更灵活的定制,结合IFormatProvider和ICustomFormatter接口,能进一步定制输出。 6. **值类型与引用类型** - 值类型不支持多态,适合存储数据,而引用类型支持多态,适合定义行为。 - 数组作为值类型可以提高性能。 - 值类型返回时以复制方式进行,避免暴露内部结构,减少内存碎片和间接访问时间。 - 适用于值类型的情况:数据存储为主,没有子类,没有多态行为,接口由数据成员存取属性定义。 7. **常量性和原子性值类型** - 常量性和原子性值类型便于编写和维护。 - 初始化常量的策略包括构造函数、工厂方法和使用可变辅助类。 8. **确保0为有效状态** - 值类型的默认状态应为0,枚举类型的0不应视为无效。 - 在FlagsAttribute中,0值应为有效状态。 - 字符串为空时可返回string.Empty。 9. **相等判断** - ReferenceEquals()检查引用是否相同。 - 静态Equals()方法首先检查引用,然后比较值。 - 引用类型可重写Equals()和GetHashCode()以实现值语义,并提供operater==操作。 10. **GetHashCode()方法的注意点** - GetHashCode()主要用于散列集合,如HashTable和Dictionary。 - 实现GetHashCode()时应遵循三个原则:相等对象应返回相同散列值,保持实例不变式,散列函数需产生均匀分布。 11. **优先使用foreach循环** - foreach循环简化了迭代操作,编译器会自动处理索引和类型转换,降低了出错概率。 以上这些技巧和最佳实践可以帮助C#开发者编写更高效、更易维护的代码。然而,实际应用中应根据具体项目需求和性能要求来权衡选择。如果想深入了解这些知识点,建议阅读原书获取更详尽的指导。
剩余12页未读,继续阅读
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
- 1
- 2
- 3
- 4
- 5
- 6
前往页