《Effective C#》读书笔记——条目20:保证值类型的常量性和原子性<.NET资源管理>
"常量性"指的是:对象自创建后,它的值就保持不变。如果在构造函数中就验证了参数的有效性,那么就能够保证之后该变量值始终是有效的——因为已经不能再改变它的内部状态了。这样做有很多好处: 常量性的类型可以减少必要的错误检查。 常量性的类型也是线程安全的类型,上下文切换中线程读取的数据一致。 常量性的类型可以安全的暴露给外界,因为调用者不能改变对象的内部状态。 常量性的类型在基于散列(hash...

《Effective C#》读书笔记——条目21:限制类型的可见性<使用C#表达设计>
在保证类型可以完成其工作的前提下,我们应该尽可能的给类型分配最小的访问级别。可见性越低那么以后升级更改时所需的变化也就越少——因为能访问你的功能的代码越少,以后可能出现的修改也就会越少。 使用内部类来限制类型作用域 创建内部类是一种常被忽略的限制类型作用域的方法,在创建一个类时,应该仔细考虑这个新类型的作用范围:是将被所有的客户使用?还是仅仅用在程序集的内部。内部的类可以让你...
《Effective C#》读书笔记——条目22:通过定义并实现接口替代继承<使用C#表达设计>
接口是一种按照契约设计的方式,一个类型必须实行接口中定义的方法。抽象基类则为一组相关的类型提供了一个共有的抽象。要注意二者的使用场景和区别:基类描述了对象是什么;接口描述了对象将如何表现行为。 1.关于接口 接口描述了一组功能,是一个契约,任何实现接口的类型必须为接口中定义的所有所有元素提供具体的实现。我们应该将可重用的行为提取出来,定义在接口中;由于不同相关的类型均...

《Effective C#》读书笔记——条目23:理解接口方法和虚方法的区别<使用C#表达设计>
实现和覆写虚方法的区别:接口中声明的成员默认不是虚方法。派生类不能覆写基类中实现的接口成员。接口可以被显式实现,这会使针对该类的公有成员隐藏起来。接口与虚方法的概念不同,用法也不同。 改变从基类继承的接口在派生类中的行为 我们来看一个简单的例子: 1 interface IMsg 2 { 3 void Message();...

《Effective C#》读书笔记——条目24:用委托实现回调<使用C#表达设计>
在C#语言中,回调是通过委托来实现的。委托为我们提供了安全的回调定义,大多数委托都和事件相关,但这不是委托的全部应用场景,当类之间需要通信,并且我们希望一种比接口更加松耦合的机制时,委托便是最佳选择。委托允许我们在运行时配置目标并且通知多个客户对象,委托对象中包含一个引用,该方法可以使静态方法也可以是实例方法。使用委托,我们可以和一个或者多个在运行时联系起来的客户对象进行通信。 ...
《Effective C#》读书笔记——条目26:避免返回对内部类对象的引用<使用C#表达设计>
可能你会认为只读属性就只能读取,调用者不可能改变属性值。并非所有的情况都是如此,我们看下面的示例: 1 public class MyBusinessObject 2 { 3 private List<string> listOfData = new List<string> {"COM1","COM2","COM3","CO...
《Effective C#》读书笔记——条目25:用事件模式实现通知<使用C#表达设计>
.NET中的事件其实就是一个观察者模式(Observer Pattern)的一个语法上的快捷实现(更多可以参考:使用委托和事件实现观察者模式)。事件是一种内建的委托,用来为事件处理函数提供类型安全的方法签名。事件就是对象将信息告知观察者的方式。 1.发布者定义事件 我们来看一个例子,有一个日志类,将应用程序需要分发的信息发送个各个侦听者,这些侦听者可以是控制域、系统日志、数据库...

《Effective C#》读书笔记——条目27:让类型支持序列化<使用C#表达设计>
持久化(persistence)是类型的一个重要特性。只要我们的类型不是UI控件、窗体或者表单,都应该尽可能的为类型添加序列化支持。.NET的序列化是把类中所有成员变量保存到输出流中,同时.NET的序列化还支持任意的对象图(object graph):即使你的对象上有一个循环引用,serialize 和deserialize 方法都只会为你的实际对象读取和储存一次。 1. .NET的...
《Effective C#》读书笔记——条目28:提供粗粒度的互联网API<使用C#表达设计>
在使用Web服务、.NET远程调用或给予Azure的程序时,最耗时的就是与远程服务器之间传输过程。如果只是简单的将本地API封装一下,就变成远程使用的API,这样做功能上不会有问题,但是效率低下。API的粒度越细所花费在等待数据返回的额外事件也就越多。 在创建基于Web的服务时,客户端和服务器的通信过程应该向发送传真一样:客户端可以独立、不需要与服务器取得联系的情况系下工作一段时间。然后在一....
一起谈.NET技术,《Effective C#中文版:改善C#程序的50种方法》读书笔记
从去年找工作以来,都没什么时间写博客[找工作的体会:建议以后有自己开公司的IT人一定要找IT专业人员做HR,好多公司的HR并不能真正发掘人才,他们形成了太多的偏见,如在学校期间学不了什么东西、只看学校有多少奖励等。真正钻研技术的人才不会追求虚无的东西],其实这本书我都借了好久,一直没有系统的看,所以趁这两天好好看看,顺便总结了一些要点,给那些需要这方面知识而又没有太多时间的IT人一个快速的学....
本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。