Effective C# 原则12:选择变量初始化而不是赋值语句

JerryXia 发表于 , 阅读 (1,490)
(译注:根据我个人对文章的理解,我把initializer译为:初始化器,它是指初始化语法,也就是在一个类里声明变量的同时,直接创建实例值的方法。 例:object m_o = newobject();如果这段代码不在任何函数内,但在一个类里,它就是一个初始化器,而不管你是把它放在类的开始还以结尾。)一些类经常不只一个构造函数。时间一长,就难得让它的成员变量以及构造函数进行同步了。最好的确保这样的事不会发生的方法就是:在声明就是的时间就直接初始化,而不是在每个构造函数内进行赋值。而且你应该... 阅读全文

.Net资源管理

JerryXia 发表于 , 阅读 (1,726)
一个简单的事实:.Net应用程序是在一个托管的环境里运行的,这个环境和不同的设计器有很大的冲突,这就才有了EffectiveC#。极大限度上的讨论这个环境的好处,须要把你对本地化环境的想法改变为.NetCLR。也就意味着要明白.Net的垃圾回收器。在你明白这一章里所推荐的内容时,有必要对.Net的内存管理环境有个大概的了解。那我们就开始大概的了解一下吧。垃圾回收器(GC)为你控制托管内存。不像本地运行环境,你不用负责对内存泄漏,不定指针,未初始化指针,或者一个其它内存管理的服务问题。但垃圾... 阅读全文

《渝李文集静日书 -- 宋恩南的夏日薄荷香》

JerryXia 发表于 , 阅读 (1,479)
发布于:2006-8-31 14:47:18那段关于爱情的快乐时光,就此停留在二十岁的盛夏,那些扎根青春深处的花,都要独自开放。这个夏天不太热,端午过了,酷热还在身后。良祈挤在火车站熙来攘往的人群中,去一个有宋恩南的城市。火车开动时他趴在床铺上沉沉睡去,在列车穿越黑暗中的大片田野时,做了一个长长的梦。他梦见那段在他脑海中回放了无数次的年少时光,有一朵花在寂静的墙角独自盛开。那是良祈初见宋恩南的年少,在风里藏满馨香的南方。良祈对小城最深的记忆是山。绵延不断的山,苍翠连着黛青。阳光充沛的日子,... 阅读全文

Effective C# 原则11:选择foreach循环

JerryXia 发表于 , 阅读 (1,912)
C#的foreach语句是从do,while,或者for循环语句变化而来的,它相对要好一些,它可以为你的任何集合产生最好的迭代代码。它的定义依懒于.Net框架里的集合接口,并且编译器会为实际的集合生成最好的代码。当你在集合上做迭代时,可用使用foreach来取代其它的循环结构。检查下面的三个循环:int [] foo = new int[100]; // Loop 1: foreach ( int i in foo) Console.WriteLine( i.ToString( ... 阅读全文

C#性能优化实践

JerryXia 发表于 , 阅读 (1,727)
性能主要指两个方面:内存消耗和执行速度。性能优化简而言之,就是在不影响系统运行正确性的前提下,使之运行地更快,完成特定功能所需的时间更短。本文以.NET平台下的控件产品MultiRow为例,描述C#性能优化的实践。性能优化原则· 理解需求MultiRow的一个性能需求是:“百万行数据绑定下平滑滚动。”整个MultiRow项目的开发过程一直在考虑这个目标。· 理解瓶颈99%的性能消耗是由于1%的代码造成的。大部分性能优化都是针对这1%的瓶颈代码进行的。具体实施也就分为两步:“发现瓶颈”和“消... 阅读全文

Effective C# 原则10: 明白GetHashCode()的缺陷

JerryXia 发表于 , 阅读 (2,125)
这是本书中唯一一个被一整个函数占用的原则,你应该避免写这样的函数。GetHashCode()仅在一种情况下使用:那就是对象被用于基于散列的集合的关键词,如经典的HashTable或者Dictionary容器。这很不错,由于在基类上实现的GetHashCode()存在大量的问题。对于引用类型,它可以工作,但高效不高;对于值类型,基类的实现经常出错。这更糟糕。你自己完全可以写一个即高效又正确的GetHashCode()。没有那个单一的函数比GetHashCode()讨论的更多,且令人困惑。往下... 阅读全文

Effective C# 原则9:明白几个相等运算之间的关系

JerryXia 发表于 , 阅读 (1,839)
明白ReferenceEquals(), static Equals(), instance Equals(),和运算行符==之间的关系。当你创建你自己的类型时(不管是类还是结构),你要定义类型在什么情况下是相等的。C#提供了4个不同的方法来断定两个对象是否是相等的:public static bool ReferenceEquals( object left, object right ); public static bool Equals( object left, object r... 阅读全文