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