C#学习笔记之C#只读字段

发布时间:2019-12-14编辑:脚本学堂
本文介绍下,C#中只读字段的相关内容,只读字段可以在构造函数中给只读字段赋值,但不能在其他地方赋值。供大家学习参考。

先来个有关C#只读字段的总结:
1,const定义是常量,其概念就是包含一个不能修改的值,而只读字段是在运行之前是未知的,但定义之后值不能改变。
2,只读字段,只可以在构造函数中对只读字段赋值。
3,静态的只读字段只能在静态构造函数中定义。
4,非静态制度字段,每一个实例都会有不同的值。
5,只读字段和常量都不需要设置为私有,因为我们不能在外部修改它们。
6,如果不在构造函数中赋值,那么制度字段会自动初始化为其数据类型的默认值。

只读字段可以在构造函数中给只读字段赋值,但不能在其他地方赋值,只读字段可以是一个实例字段,而不是静态字段,类的每个实例可以有不同的值。
与const字段不同,如果要把字段设置 为静态,就必须显式声明。

有关C#只读字段与常量的区别,这里有个实例代码:C#只读字段和常量的区别 静态构造函数的例子,大家可以参考下。

如果有一个编辑文档的MDI程序,因为要注册,需要限 制可以同时打开的文档数。现在假定要销售该软件的不同版本,而且顾客可以升级他们的版本,以便同时打开更多的文档。显然,不能再源代码中对最大文档数进行 硬编程。而是需要一个字段表示这个最大文档数。这个字段必须是只读的---每次安装程序时,从注册表或其他文件存储中读取。
 

复制代码 代码示例:
public class DocumentEditor
{
   public static readonly uint MaxDocuments;
   static DocumentEditor()
   {
      MaxDocuments = DoSomethingToFindOutMaxNumber();
}
}

在本例中,字段是静态的,因为每次运行程序的实例时,只需存储最大文档数一次。 这就是在静态构造函数中初始化它的原因。如果只读字段是一个实例字段,就要在实例构造函数中初始化它。
 

复制代码 代码示例:
public class Document
{
   public readonly DateTime CreationDate;
   public Document()
   {
     CreationDate = someDate;
   }
}

注意:
在构造函数中不必给只读字段赋值,如果没有赋值,它的值就是其数据类 型的默认值,或者在声明时给它初始化的值。
这适用于静态和实例只读字段。

有关C#只读字段的内容,就介绍这些吧,希望对大家有所帮助。