浅尝EffectiveC#_11
摘要:Item 18: Distinguish Between Value Types and Reference Types 认识值类型和引用类型的区别●这不是C++,你可以把所有类型都定义为值类型,并为它们做一个引用。这也不是Java,所有的类型都是值类型。你在创建每个类型实例时,你必须决定它们以什么样的形式存在。这是一个为了取得正确结果,必须在一开始就要面对的重要决定。Value types or...
阅读全文
浅尝EffectiveC#_10
摘要:Item 17: Implement the Standard Dispose Pattern实现标准的释放模式● 现在是时候来讨论如何写代码来管理这些类占用的非内存资源了。一个标准的模式就是利用.Net框架提供的方法处理非内存资源。Now it’s time to cover how to write your own resourcemanagement code when you...
阅读全文
浅尝EffectiveCSharp_9
摘要:Item 16: Avoid Creating Unnecessary Objects 避免创建不必要的对象GC内存管理上做的很好,而且它会高效的移除没用的对象。但是不要让他工作过度,你可以通过一些简单的方法来最小化GC的工作量。下面来看例子[代码]在这里OnPaint()方法经常被调用。每当他被调用的时候,就会产生另一个一摸一样的Font对象。GC每次都要为你清除,这是低效的。取而代之的是,把F...
阅读全文
浅尝EffectiveCSharp_8
摘要:Item 15: Utilize using and try/finally for Resource Cleanup 使用using 和 try/finally 进行资源清理●使用非托管系统资源的类型应该用Dispose()方法来释放。.NET环境的规则是:使用该类型的代码对它有释放的责任,而不是该类型或者系统。The rules of the .NET environment make tha...
阅读全文
浅尝EffectiveCSharp_7
摘要:Item 14: Minimize Duplicate Initialization Logic 最小化重复的初始化逻辑写构造器经常是一种重复的工作。许多人写好第一个构造器后,用复制、粘贴到另一个构造器,来满足对类的重载。从现在起,不要在这样做,当你发现多种构造器拥有相同的逻辑时,把相同的逻辑提炼出来,放到一个公共的构造器中。你会体验到防止代码重复的好处。而编译器也最小化的执行代码,构造器允许一个...
阅读全文
浅尝EffectiveCSharp_6
摘要:Item 12: Prefer Member Initializers to Assignment Statements 使用成员初始化,避免赋值声明Classes often have more than one constructor. Over time, it’s easy for the member variables and the constructors to get...
阅读全文