C# readonly

MSDN 官方的解释

readonly 关键字是可以在字段上使用的修饰符。当字段声明包括 readonly 修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数中.
我的理解是:
public class tt
{
  private readonly int i=5;
}
或者
public class tt
{
  private readonly int i;
  public tt(int j)
  {
    i=j;
  }
}
跟const不一样的地方时:可以在构造函数里面赋值,另外可以支持如DateTime等const不支持的类型。
 
但是,但是,但是,赋值这件事情对一些集合类型来说相当于new,不等于add、remove,如
public class tt
{
  private readonly List<int> items;
  public tt()
  {
    items=new List<int>();
  }
  public Add(int i)
  {
    items.Add(i);//这是允许的
  }
  public void ReNew()
  {
    items=new List<int>();//这是不允许的
  }
}
这样做的好处在于可以避免程序在其他地方重新初始化变量(我以为)。
原文地址:https://www.cnblogs.com/catzhou/p/8312945.html