最重要的区别:
readonly字段的值是在运行时才确定的(声明时的值或者在构造函数中确定,可以在声明中和构造函数(只能是本类的,不能是派生类的)中都对readonly字段赋值),以后就不能重新赋值。
const字段的值是在编译时就确定的(字段声明中的值),以后就不能重新赋值。const还可以修饰局部变量。常数表达式是在编译时可被完全计算的表达式。 因此,对于引用类型的常数,可能的值只能是 string 和 null 引用。
因为上述原因,readonly字段在不同的实例中可以不同(static readonly除外),而由于const字段在编译时就确定了,所以对不同的实例来说都是一样的,所以const字段实际上是当作静态字段来处理的。
http://blog.csdn.net/puncha/article/details/8462740
http://www.jb51.net/article/41796.htm
http://bbs.csdn.net/topics/390258615
补充:
readonly字段没什么特殊的,跟普通字段一样,只是只能在声明中和本类的构造函数中赋值罢了(还有其他,但是重要吗?),不能被称作常量
const字段才是常量(constant),天生就是静态的,必须在编译时就确定它的值是多少