文章 2017-11-08 来自:开发者社区

《Effective C#》读书笔记——条目16:避免创建非必要的对象<.NET资源管理>

我们知道:C#是一门虚拟机语言,C#编译器首先将C#代码编译成IL代码,运行程序时CLR(Common Language Runtime,公共语言运行时)通过调用JIT(just-in-time Compiler,即时编译器)来将IL代动态即时编译成可执行的机器码。GC(Garbage Collector,垃圾收集器)自动为我们的应用程序进行内存管理的分配和释放,(具体参见:了...

文章 2017-10-16 来自:开发者社区

《Effective C#》读书笔记——条目19:保证0为值类型的有效状态<.NET资源管理>

NET系统的默认初始化过程会将所有的对象设置为0。我们就会难免创建出一个初始化为0值的值类型,所以我们应该将0作为类型的默认值,可以避免一些不必要的Bug。   1.将0设置为枚举的有效值   使用枚举时我们必须将0设置为枚举的一个有效选项。所以枚举值都派生于System.ValueType。枚举默认的值开始于0,但是也可以自定义: 1 public enum Month 2 ...

文章 2017-10-12 来自:开发者社区

《Effective C#》读书笔记——条目15:使用using和try/finally清理资源<.NET资源管理>

在.NET环境中,非托管系统资源由开发人员来负责释放,且非托管系统资源必须显式的使用IDisposable接口的Dispose()来释放(详见:了解.NET内存管理机制)。所有封装或使用了非托管资源的类型都实现了IDisposable接口。同时这些类也在终结器中调用Dispose(),保证了开发人员在忘记资源释放的时候仍然能够正常的释放掉资源(对象资源会一直停留在内存中,直到终结器被调用),这会....

《Effective C#》读书笔记——条目15:使用using和try/finally清理资源<.NET资源管理>
文章 2017-09-22 来自:开发者社区

《Effective C#》读书笔记——条目14:尽量减少重复的初始化逻辑<.NET资源管理>

构造函数的工作是为了初始化对象的所有成员,而一个类有多个构造函数又是一个非常常见的情景,所有这些构造函数难免会有类似乃至相同的逻辑,并且随着时间的推移,成员变量的增加,功能的改变,构造函数的个数也会不断上升。很多的开发人员一般会先编写一个构造函数,然后将其代码复制粘贴到其他的构造函数当中,以支持在类接口上定义的多个重写构造函数.其实我们不应该这样做,当发现多个构造函数包含类似的逻辑时,我们可以将....

《Effective C#》读书笔记——条目14:尽量减少重复的初始化逻辑<.NET资源管理>
文章 2017-09-20 来自:开发者社区

《Effective C#》读书笔记——条目12:推荐使用成员初始化器而不是赋值语句<.NET资源管理>

 一般情况下,一个类都会有多个构造函数。随着时间的推移,成员变量、构造函数不断增加。为了处理这种情况最方便的办法就是:在声明变量的时候进行初始化,而不是在每个构造函数中进行。无论是类成员(静态变量)合适实例变量,我们都应该充分利用初始化器的语法。   C#编程在,一般在声明一个变量的同时我们会对其进行初始化: 1 class Employee 2 { 3 priv...

文章 2017-09-12 来自:开发者社区

《Effective C#》读书笔记——条目20:保证值类型的常量性和原子性<.NET资源管理>

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

《Effective C#》读书笔记——条目20:保证值类型的常量性和原子性<.NET资源管理>
文章 2017-09-06 来自:开发者社区

《Effective C#》读书笔记——条目13:正确地初始化静态成员变量<.NET资源管理>

 我们知道在C#语言中创建一个类型的实例前,就应该初始化该类型的所有静态成员变量。C#语言为我们提供了静态初始化器和静态构造函数。其中,静态构造函数是一个特殊的构造函数,将在其他所有方法执行前以及变量或属性被第一次访问之前将自动调用静态构造函数,且仅执行一次。我们可以通过使用静态构造函数来初始化静态变量、实现单例模式或者执行类在可用之前的所有操作。但是不能够使用实例构造函数专门的私有函数或者其他....

文章 2017-09-05 来自:开发者社区

《Effective C#》读书笔记——条目18:区分值类型和引用类型<.NET资源管理>

C#和JAVA不同,在C#中可以创建值类型,而在Java中创建的所有类型都是引用类型。在使用C#开发时,选择值类型还是引用类型对我们的程序的行为会产生很大的影响,所以我们需要对值类型和引用类型的使用场景进行了解和对二者的不同进行区分。   1.引入引用类型和值类型的原因     C#之所以添加了值类型和引用类型的区别是由于:C++和Java中普遍存在的问题,在C++中,所有的参数和返回值...

文章 2017-08-23 来自:开发者社区

《Effective C#》读书笔记——条目17:实现标准的销毁模式<.NET资源管理>

 如何为我们自己的包含非托管资源的类型编写资源管理代码呢?在 .NET 中为我们提供了一种标准的销毁非托管资源的模式,这个标准的模式能够使使用者通过调用IDisposable接口正常释放掉非托管资源,也能够保证使用者在忘记释放资源时使用终结器释放。这个标准模式可以和GC配合,保证仅在最糟糕的情况下才调用终结器,尽可能的降低其带来的性能影响。   阅读目录:     1...

《Effective C#》读书笔记——条目17:实现标准的销毁模式<.NET资源管理>

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

产品推荐