readonly const

readonly:只读域,只能在初始化--声明初始化或构造器初始化--的过程中赋值,其他地方不能进行对只读域的赋值操作,否则编译器会报错。只读域可以是实例域也可以是静态域。只读域的类型可以是C#语言的任何类型。

const:不变常量,const修饰的常量必须在声明的同时赋值,而且要求编译器能够在编译时期计算出这个确定的 值。const修饰的常量为静态变量,不能够为对象所获取。const修饰的值的类型也有限制,它只能为下列类型之一(或能够转换为下列类型 的):sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, bool, string, enum类型, 或引用类型。值得注意的是这里的引用类型,由于除去string类型外,所有的类型出去null值以外在编译时期都不能由编译器计算出他们的确切的值,所 以我们能够声明为const的引用类型只能为string或值为null的其他引用类型。显然当我们声明一个null的常量时,我们已经失去了声明的意义 --这也可以说是C#设计的尴尬之处!

实际上, const修饰的常量是在编译时便被计算出确定的值,并代换到引用该常量的每一个地方,而readonly时在运行时才确定的量--只是在初始化后我们不 希望它的值再改变。

可以将const理解为另一种宏定义,在编译的时候代换,所以只能是基本类型,因为引用类型除了null,在编译期间无法计算其值。

时间: 2024-10-06 21:24:43

readonly const的相关文章

static, readonly, const

static Use the static modifier to declare a static member, which belongs to the type itself rather than to a specific object. The static modifier can be used with classes, fields, methods, properties, operators, events, and constructors, but it canno

readonly const关键字

readonly 关键字与 const 关键字不同. const 字段只能在该字段的声明中初始化. readonly 字段可以在声明或构造函数中初始化. 因此,根据所使用的构造函数,readonly 字段可能具有不同的值. 另外,const 字段为编译时常数,而 readonly 字段可用于运行时常数,如下例所示: public static readonly uint timeStamp = (uint)DateTime.Now.Ticks; // 运行时的时间赋值给static readon

c#中const、static、readonly的区别

1. const与readonly const ,其修饰的字段只能在自身声明时初始化. Readonly 是只读变量,属于运行时变量,可以在类初始化的时候改变它的值.该类型的字段,可以在声明或构造函数中初始化. 因此,根据所使用的构造函数,readonly 字段可能具有不同的值. const只能在初期就使用常量初始化好.对于每一次编译后的结果,const的值是固定的,而readonly的值是可以在运行的时候才确定值的. 2. const 与 static static 定义的是静态变量.可以在外

let & const 命令

*,html { font-size: 16px } 一.let命令 用于声明变量. 1) 所声明的变量只在let命令所在代码块内有效.(块级作用域) { let a=10; var b=1; } a // ReferenceError: a is not defined b // 1 var li=document.getElementsByTagName("li"); for(let i=0;i<li.length;i++){ li[i].addEventListener(&

[TypeScript] Make Properties and Index Signatures Readonly in TypeScript

TypeScript 2.0 introduced the readonly modifier which can be added to a property or index signature declaration. It helps prevent against unintended property assignments. This lesson gives various use cases for readonly and shows what the generated J

《Inside C#》笔记(四) 类

类是对数据结构和算法的封装. 一 类成员 类成员包括以下几类,作者在后面的章节会详细讲解. 字段(用来保存数据,可用static readonly const来修饰).方法(操作数据的代码).属性(用来控制对类内部变量的访问).常量.索引器.事件和运算符. 二 访问修饰符 public 可被外部的类和派生类访问 protected 只能被派生类访问 private 外部的类和派生类都不能访问 internal 程序集内部可访问 不管类本身还是类成员默认的修饰符都是private 三 Main 函

初级前端自学react-native,必备知识点(ES6+ReactJS+flexbox)

我们在学会搭建react-native环境之后,打开项目根目录,看到很多个文件,但是最起眼的应该就是那俩js兄弟文件了 我们一看那名字就知道,我们接下来的任务就是要弄它们: 我们用编辑器打开项目根目录下的index.android.js文件,可以看到有这么个东西: 那么我们先测试一下,在手机上跑起来.不知道大家还记不记得步骤: 第一步:在项目根目录下打开两个git bash.第一个输入:react-native start        这一步是在启用服务器 第二步:在第一步成功之后,连接手机,

C#-1 数据类型

Int ,float, double, char, string String.Length 是 只读的, 不能赋值, string 是不可变得 Stringbuilder 可以修改变量的数据 Var 值类型和引用类型 值类型是值复制, 将一个变量复给另一个变量,会创建原始变量的内存副本,因此更改一个变量的值不会影响另一个变量. 方法调用时,行参不改变实参的值 引用类型并不存储值,而是存储地址 可空修饰符: ? Int? a = null; 数据类型转换: 大类型到小类型需要 显示转化  lon

C# 静态static 嵌套类 分部类

/*static的相关内容:静态字段,静态属性,静态方法,,静态构造,静态类,readonly,const,嵌套类,分部类 * static可以理解为全局的,共享同一块内存 * 可以通过default(类型名)得到每个类型的默认值 * 静态字段不从属于字段而是从属与类,而实例字段都是从属于每个字段,针对于每个字段都有不同的值 * 类和对象都能关联数据: * this是用于实例的访问方法,所以你能用this.静态成员进行访问 * 要想在静态方法中获得实例成员的访问,就必须先获得对字段或方法所从属于