在C#中将字段标记为只读有什么好处?

readonly关键字用于将成员变量声明为常量,但允许在运行时计算值。这不同于用const修饰符声明的常量,该常量必须在编译时设置其值。使用只读,您可以在声明中或在该字段所属成员的对象的构造函数中设置字段的值。

“只读”修饰符可以在总共四个上下文中使用:

  • 现场申报

  • 只读结构声明

  • 只读成员定义

  • 引用只读方法返回

当我们使用字段声明上下文时,我们需要知道赋值只能发生在声明时或调用同一类的构造函数时。

示例

class Program{
   readonly string Name;
   public Program(){
      Name = "Name";
   }
   static void Main(string[] args){
      Program a = new Program();
      System.Console.WriteLine(a.Name);
      Console.ReadLine();
   }
}

输出结果

Name

只读结构

public readonly struct Server{
   public readonly string Name;
   public Server(string name){
      Name = name;
   }
}
class Program{
   static void Main(string[] args){
      Server a = new Server("Domain Controller");
      System.Console.WriteLine(a.Name);
      Console.ReadLine();
   }
}

输出结果

Domain Controller