摘要: 如何编程计算N个数的最大公约数(Greatest common divisor)呢?第一想法那便是两两计算,但是往往最简单的想法是不怎么靠谱的。本文用递归来解决。 阅读全文
posted @ 2009-09-06 21:26 Kevin Dai 阅读(1838) 评论(0) 推荐(0) 编辑
摘要: 默认情况下,CLR认为一切参数传递是按值传递。如果您传递的是一引用类型的参数,传送的那便是把这个引用的"值",可以理解为指针(pointer)吧;如果您传递的是一值类型的参数,那么传送的便是值了。在.NET中,提供了按引用传递的方法,这要依赖于out和ref这两个关键字。 阅读全文
posted @ 2009-08-29 15:09 Kevin Dai 阅读(678) 评论(0) 推荐(0) 编辑
摘要: 谈起排序,势必会想到比较。在.NET框架中什么和比较有关系呢?自然是IComparable、IComparable<T>、IComparer<T>这三个接口,其中IComparable<T>为IComparable的泛型版本。泛型的优点自然不必多说。在一切有可能的情况,我们应该优先使用泛型。 阅读全文
posted @ 2009-08-13 15:34 Kevin Dai 阅读(2222) 评论(4) 推荐(2) 编辑
摘要: 当你覆盖Equals方法时,一定要覆盖GetHashCode方法,否则当你在使用一些容器类型时,会出现与您预期相违的结果。因为容器类是根据GetHashCode方法来和容易里的键做哈希值比较,所以要覆盖GetHashCode方法。其实这也符合常规,既然两个实例相等了,那它们的哈希值不相等也无道理的啊。所以请记住:当你覆盖Equals方法时,一定要覆盖GetHashCode方法。 阅读全文
posted @ 2009-08-05 00:07 Kevin Dai 阅读(740) 评论(0) 推荐(1) 编辑