《Effective C#》读书笔记:提升C#编程技巧的50个建议

版权申诉
5星 · 超过95%的资源 1 下载量 197 浏览量 更新于2024-09-06 收藏 67KB DOC 举报
"《Effective C#中文版:改善C#程序的50种方法》读书笔记,涵盖了C#编程中的关键技巧和最佳实践,旨在优化代码质量和性能。" 1. **属性代替可访问的字段** - 在.NET环境中,属性不仅提供数据绑定支持,还能在get和set访问器中加入如`lock`这样的同步机制,确保线程安全。 - 应尽量避免直接公开字段,使用属性能更好地控制数据的访问和修改。 2. **readonly与const** - const是编译时常量,仅适用于基本类型、枚举和字符串,其值在编译时确定,修改const变量需要重新编译所有引用它的代码。 - readonly是运行时常量,可以用于任何类型,且在对象初始化后不可更改,更适合保存非编译时就能确定的常量。 - 根据需要的灵活性和效率权衡使用const和readonly。 3. **is与as操作符** - is用于检查对象是否为特定类型,as则用于安全类型转换,转换失败时返回null,适用于引用类型。 - 使用is先进行类型检查,再根据结果决定是否使用as转换,可以避免不必要的异常。 4. **ConditionalAttribute与#if#endif** - ConditionalAttribute用于标记方法,仅在特定编译标志启用时编译,限制于方法级别。 - #if#endif是预处理器指令,可应用于更多场景,支持与操作,更灵活。 - ConditionalAttribute提供了更干净的代码组织,降低了条件编译的复杂性。 5. **提供ToString()方法** - 自定义ToString()方法可以提供更丰富的信息,方便调试和日志记录。 - 结合IFormatter接口和ICustomFormatter,可以实现高度自定义的输出格式。 6. **值类型与引用类型** - 值类型不支持多态,主要用于存储数据,而引用类型支持多态,适合定义行为。 - 数组定义为值类型在某些情况下能提升性能,但可能导致内存拷贝开销。 - 值类型减少内存碎片,减少垃圾回收压力,并通过方法返回时的复制保护内部状态。 - 值类型适用于数据存储为主,不涉及复杂行为或多态性的类设计。 以上总结了文档中的一部分核心知识点,实际的《Effective C#中文版》涵盖了更多优化C#编程的策略和建议,包括接口、枚举、集合、异步编程等多个方面,旨在帮助开发者写出更高效、可维护的代码。