文章 2023-08-17 来自:开发者社区

《More Effective C# 》读书笔记 第一章

在 C# 中,使用属性而不是可访问的数据成员可以提高代码的可维护性和灵活性。以下是一些使用属性而不是可访问的数据成员的好处:封装性更强:通过使用属性,可以将数据成员封装起来,以防止外部代码直接访问。例如,可以定义一个只读属性,以确保某个数据成员只能被读取,而不能被修改。代码更清晰:使用属性可以使代码更加清晰和易于理解。属性可以像普通字段一样使用,但是它们提供了更多的控制和保护。更灵活的设计:使用....

文章 2022-02-16 来自:开发者社区

C#读书笔记(基本篇)

  2010-06-13 12:37:24   来源:源码之家 站长整理    【大 中 小】   浏览: 1232 次 C# 的数据类型分为:值类型和引用类型 值类型: 变量:从用户角度,变量是存储信息的基本单元。从系统角度,变量是计算机内存中的一个存储空间。 C#值类型分为: 简单类型(Simply types) ...

文章 2022-02-16 来自:开发者社区

《Effective C#》读书笔记——条目1:使用属性而不是可访问的数据成员

  属性允许将数据成员作为公共接口的一部分暴露出去,同时仍旧提供面向对象环境下所需要的封装。属性这个语言元素可以让你像访问数据成员一样使用,但底层依旧使用方法实现。通过使用属性我们可以创建出类似于数据访问(客户代码在访问属性时,就像是在访问共有的字段),但实际上确是方法调用的接口,自然也可以享受到方法调用的所有好处。   在.NET Framework中,数据绑定类仅支持属性,而不支持公有数据.....

文章 2022-02-16 来自:开发者社区

《Effective C#》读书笔记——条目2:用运行时常量而不是编译期常量

  C#语言中有两种类型的常量:编译期常量和运行时常量。应该尽量使用运行时常量,而不是编译期常量。虽然编译期常量略快一些,但是没有运行时常量那么灵活。应仅仅在那些性能异常敏感,且常量的值在各个版本之间绝对不会变化时,才使用编译器常量。   运行时常量使用readonly关键字声明,编译时常量使用const关键字声明: 1 //编译时常量,可以声明在方法中 2 p...

文章 2022-02-16 来自:开发者社区

《Effective C#》读书笔记——条目3:推荐使用is或as而不是强制转换类型

  C#是强类型语言,在开发过程中类型之间的相互转化是一种很常见的场景。C#为类型转换提供两种选择: 1.使用as操作符 2.使用强制类型转换   或者可以使用更保险的做法,首先用is测试一下,能否转换成功,然后再使用as或者强制类型转换。在大部分情况下,我们应该尽可能的使用as操作符: 因为相对于强制类型转换来说,as更安全,也更加高效。as和is操作符都不会执行任何用户自定义的转换,它...

文章 2022-02-16 来自:开发者社区

《Effective C#》读书笔记——条目5:为类型提供ToString()方法

  ToString()方法作为.NET环境中最常用的方法之一,我们应该为类型的所有者提供一个合理的ToString()版本,类型的字符串表示可用来在不同的环境下向用户轻松显示对象的相关信息;此外,类型的字符串表示还可以拥有调试环境。因此,我们创建的每一个类型都应该能覆写Object类的ToString()方法。如果创建的是更负责的类型,那么还应该实现更加完备的IFormattable.ToSt....

《Effective C#》读书笔记——条目5:为类型提供ToString()方法<C#语言习惯>
文章 2022-02-16 来自:开发者社区

《Effective C#》读书笔记——条目4:使用Conditional特性而不是#if条件编译

  #if/#endif 语句常用来基于同一份源码生成不同的编译结果,其中最常见的就是debug版和release版。但是这些工具在实际应用中并不是非常友好,因为它们容易被滥用,其代码页进而难以理解或调试。C#设计中考虑到这个问题,并提供了更好的工具——Conditional特性,用来为不同的环境编译不同的机器码。Conditional特性适用于方法的层面,这将强制我们将条件代码拆分为独立的方法....

文章 2022-02-16 来自:开发者社区

《Effective C#》读书笔记——条目6:理解几个等同性判断之间的关系

创建自定义的类型时(无论是类还是struct),应为类型定义”同等性“的含义。在C#中为我们提供了四种不同的函数来判断两个对象是否”相等“: 1 public static bool ReferenceEquals(object left, object right); 2 public static bool Equals(object left, object right); 3 publi....

文章 2022-02-16 来自:开发者社区

《Effective C#》读书笔记——条目8:推荐使用查询语法而不是循环

 查询语法(query syntax)可以让程序逻辑的表达由“命令式”转换为“声明式”。查询语法定义了想要的结果,而把具体实现交给其他的专门实现。使用查询语法(实现了查询表达式模式的方法语法也可以)要比传统的命令式循环结果更加清晰的表达你的意图。   下面我们观察一个使用命令式方法填充一个数组,然后将其内容输出至控制台: 1 static void Main(string[] args...

《Effective C#》读书笔记——条目8:推荐使用查询语法而不是循环<C#语言习惯>
文章 2022-02-16 来自:开发者社区

《Effective C#》读书笔记——条目10:使用可选参数减少方法重载的数量

 C#4.0 引入了具名参数(MSDN翻译为“命名实参”,个人认为具名参数更形象,可选参数亦是)和可选参数(可选实参)。客户端代码使用具名参数意味着:方法中的参数名称也成为了公有接口的一部分。假如修改公有参数的名称将有可能破坏调用者的代码。这意味着:调用者应该尽可能的避免使用具名参数,而作为API的设计者,也应该避免修改公有货受保护方法中参数的名称。   当然,并不是说具名参数是一无是处...

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐

{"cardStyle":"productCardStyle","productCode":"aliyun","productCardInfo":{"productTitle":"云效DevOps解决方案:极速构建自动化CI/CD,降本增效稳交付","productDescription":"在快速变化的市场中,软件的快速迭代和稳定交付成为企业竞争的关键。本方案介绍如何使用阿里云的产品快速构建持续集成与部署流程。通过自动化构建、测试和部署流程,提高交付速度和质量,使开发团队更好地响应市场变化和用户需求,推动业务持续增长。","productContentLink":"https://www.aliyun.com/solution/tech-solution/swiftly-building-an-effective-ci-cd-pipeline","isDisplayProductIcon":true,"productButton1":{"productButtonText":"方案详情","productButtonLink":"https://www.aliyun.com/solution/tech-solution/swiftly-building-an-effective-ci-cd-pipeline"},"productButton2":{"productButtonText":"方案部署","productButtonLink":"https://help.aliyun.com/document_detail/2861142.html"},"productButton3":{"productButtonText":"查看更多技术解决方案","productButtonLink":"https://www.aliyun.com/solution/tech-solution/"},"productPromotionInfoBlock":[{"$id":"0","productPromotionGroupingTitle":"解决方案推荐","productPromotionInfoFirstText":"云架构必修课:云上高可用架构","productPromotionInfoFirstLink":"https://www.aliyun.com/solution/tech-solution/hablog","productPromotionInfoSecondText":"灵活调度,高效编排,容器化管理云上应用","productPromotionInfoSecondLink":"https://www.aliyun.com/solution/tech-solution/ack-services"}],"isOfficialLogo":false},"activityCardInfo":{"activityTitle":"","activityDescription":"","cardContentBackgroundMode":"LightMode","activityContentBackgroundImageLink":"","activityCardBottomInfoSelect":"activityPromotionInfoBlock"}}