基础知识七之const和readonly关键字,基础知识体系

作者: 韦德国际1946手机版  发布:2019-09-24

前言

不通晓大家对const和readonly关键字两个的不一样理解多少,借使您亦不是很理解的话,那就一块儿来搜求吧!切磋从前我们先来通晓静态常量和动态常量。

  • 韦德国际1946手机版,静态常量

  所谓静态常量正是在编写翻译时期会对变量进行剖释,再将常量的值替换到开首化的值。

  • 动态常量

  所谓动态常量正是编写翻译时期会将变量标识只读常量,而不用常量的值代替,那样在宣称时能够不最初化,能够延迟到构造函数开始化。

前言

 

基础知识七之const和readonly关键字,基础知识体系八。const和readonly

const修饰的常量是上述中的第一种,即静态常量,而readonly是上述中第二种即动态常量。他们的界别能够从静态常量和动态常量的风味来证明:

  • const修饰的常量在宣称时必需开头化值;readonly修饰的常量能够不初叶化值,且能够延迟到构造函数。
  • cons修饰的常量在编写翻译期间会被深入分析,并将常量的值替换到开端化的值;而readonly延迟到运维的时候。
  • const修饰的常量保养的是功能;readonly修饰的常量珍视灵活。
  • const修饰的常量未有内部存款和储蓄器消耗;readonly因为急需保留常量,所以有内部存款和储蓄器消耗。
  • const只可以修饰基元类型、枚举类、大概字符串类型;readonly却尚无这几个范围。

  不掌握我们对const和readonly那多少个重大字的界别有哪些了然,原本本身在此之前还真不清楚它们毕竟是怎么回事,那么只要您亦非很通晓的话,能够同步来搜求一下。在摸底那七个相当重要字的时候我们先来精晓一下静态常量和动态常量。

静态常量

代码测量检验

1. 若是我们在const修饰的常量前加static的话,会唤起错误,因为const编写翻译后正是static常量了。(PM:假诺不编写翻译的话,编辑器不会报错。编写翻译后,再提拔错误! )

 class Program    {        static const int temp = 100;        static void Main(string[] args)        {        }    }

韦德国际1946手机版 1

  1. readonly修饰的在构造函数中被赋值后就不得以转移。

韦德国际1946手机版 2

韦德国际1946手机版 3

3.代码之类:

 class Program    {        static readonly int A = B * 10;        static readonly int B = 10;        public static void Main(string[] args)        {            Console.WriteLine("A is {0},B is {1} ", A, B);            Console.ReadLine();        }    }

韦德国际1946手机版 4

readonly是动态常量,在编写翻译时期是不会剖析的,所以开首正是暗中同意值, A和B都以int类型,值都以0,所以A=0*10=0,程序接着实行到B=10,才会真的的B的初值10赋给B。

  静态常量:是指编写翻译器在编译时候会对常量实行深入分析,并将常量的值替换来开头化的不行值。

  所谓静态常量就是在编写翻译时期会对变量进行分析,再将常量的值替换成起始化的值。
动态常量
  所谓动态常量正是编写翻译时期会将变量标识只读常量,而不用常量的值代替,那样在宣称时能够不初步化,能够顺延到构造函数早先化。

  而动态常量的值则是在运营的那一刻才获得的,编写翻译器编写翻译时期将其标识为只读常量,而不用常量的值替代,那样动态常量不必在表明的时候就初阶化,而能够推迟到构造函数中初阶化。未来再来注解const与readonly吧。

const和readonly 区别

const修饰的常量是上述中的第一种,即静态常量,而readonly是上述中第三种即动态常量。他们的界别能够从静态常量和动态常量的表征来表明:
const修饰的常量在宣称时必得初步化值;readonly修饰的常量可以不初叶化值,且能够延迟到构造函数。
cons修饰的常量在编译时期会被分析,并将常量的值替换来初叶化的值;而readonly延迟到运维的时候。
const修饰的常量重视的是作用;readonly修饰的常量重视灵活。
const修饰的常量未有内部存款和储蓄器消耗;readonly因为急需保留常量,所以有内部存储器消耗。
const只可以修饰基元类型、枚举类、恐怕字符串类型;readonly却绝非那一个范围。

注意:

1.万一大家在const修饰的常量前加static的话,会提示错误,因为const编写翻译后便是static常量了。(PM:如果不编写翻译的话,编辑器不会报错。编写翻译后,再唤醒错误! )

  1. readonly修饰的在构造函数中被赋值后就不可能改动。

3.

class Program
{
static readonly int A = B * 10;
static readonly int B = 10;
public static void Main(string[] args)
{
Console.WriteLine("A is {0},B is {1} ", A, B);
Console.ReadLine();
}
}

--输出:A is 0,B is 10

 readonly是动态常量,在编写翻译时期是不会分析的,所以开放正是私下认可值, A和B都以int类型,值都以0,所以A=0*10=0,程序接着施行到B=10,才会真正的B的初值10赋给B。

 

readonly和const

  const修饰的常量是上述中的第一种,即静态常量;而readonly则是第二种,即动态常量。那么差距能够通过静态常量与动态常量的风味来注脚:

   1、const修饰的常量在宣称的时候必得最早化;readonly修饰的常量则足以延迟到构造函数初始化 

       2、const修饰的常量在编写翻译时期就被分析,即常量值被替换来起初化的值;readonly修饰的常量则推迟到运营的时候

   3、const修饰的常量器重的是成效;readonly修饰的常量珍视灵活

   4、const修饰的常量没有内部存款和储蓄器消耗;readonly因为必要保留常量,所以有内部存款和储蓄器消耗

   5、const只好修饰基元类型、枚举类、只怕字符串类型;readonly却绝非那一个界定

 

率先个例证:

假定在const前面加了二个static的话,那明显是荒谬的,因为const编写翻译之后就早就是static静态字段了

韦德国际1946手机版 5

本文由韦德国际1946发布于韦德国际1946手机版,转载请注明出处:基础知识七之const和readonly关键字,基础知识体系

关键词: c# C 基础知识 关键字 const