摘要:
有没有想过这样一个场景,每当我早上离开家里的时候扫地机器人自动工作、窗帘自动拉开、所有灯光自动关闭,不需要每天不厌其烦地重复做这些动作? Fody为此而生。Fody在编译器把你的代码编译为IL语言之前编辑IL代码插入这些自动化操作。 下面是Fody的官方介绍: Fody 是用于编织 .net 程序集 阅读全文
摘要:
结论: 当所需的精度由小数点右侧的位数决定时,decimal 类型是合适的。 此类数字通常用于财务应用程序、货币金额(例如 $1.00)、利率(例如 2.625%)等。 精确到只有一个小数用 decimal 类型处理会更准确:例如,0.1 可以由 decimal 实例精确表示,而没有精确表示 0.1 阅读全文
摘要:
一个请求到达服务器以后,ASP.NET Core 应用使用 HTTP 服务器(Kestrel或IIS)侦听 HTTP 请求。 服务器将HTTP请求的所有信息封装到HttpContext呈现给应用程序。 应用程序依次调用配置的一系列中间件处理请求: 多个中间件组合在一起称作管道(PipeLine)。每 阅读全文
摘要:
一切要从历史的源头说起。 1、古老的技术 1. 经典 ASP 开发:ASP 是通过交叉标记和服务器端脚本创建动态、数据驱动的网站和应用程序的一项主要技术 2. Windows 开发:WinForm与WebForm 历史遗留问题 1、System.web 程序集太过庞大,具有逻辑上不同的功能单元,内部 阅读全文
摘要:
结论: 某些数据属于类内部私有的,请定义成私有字段。 某些数据允许其他类访问或者编辑,请定义成属性。 使用场景: 考虑使用字段: 1、请勿提供public或protected字段。 应提供用于访问字段的属性或方法,而不是将字段设为public或protected。 2、把永远不会更改的常量设置为co 阅读全文
摘要:
结论: 当你确定或期望序列中至少包含一个元素时,使用.First()。 当数据源无法确定,你需要检查是否存在一个元素时,使用.FirstOrDefault()。所以如果无法确定是否能够得到结果时首选FirstOrDefault,处理默认值。 使用场景: 考虑使用First(),如果: 1、总是期望返 阅读全文
摘要:
一、什么是扩展方法? 结论:向现有类型添加方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种静态方法,但可以像扩展类型上的实例方法一样进行调用。 使用场景:对于原始源不受控制、派生对象不合适或不可用,或者不应在功能适用范围之外公开功能的情况,扩展方法是一个不错的选择。 概 阅读全文
摘要:
结论:如果你的类没有状态,仅为其方法存在那么可以创建一个静态类。譬如工具类Utilities。静态类是纯面向对象设计和简单性之间的折衷。 以下几点需要考虑: 1、静态类应该只用作框架的面向对象核心的支持类。 静态成员及其值属于类型本身,而不是对象。 2、不要将静态类视为杂项存储桶。 理想情况下,每个 阅读全文
摘要:
结论:根据经验,框架中的大多数类型都应该是类。如果你无法判断何时该使用结构体那么请使用类至生命尽头。 在某些情况下,值类型的特征使其更适合使用结构体。 使用Struct场景:如果类型的实例很小并且通常存活时间很短,或者通常嵌入到其他对象中,那么可以考虑定义一个结构而不是类。 除非结构具有以下所有特征 阅读全文